DNSSEC, men till vilken kostnad?

Som ni kanske vet så kör jag DNSSEC här på sulo.se sedan ett kvartal tillbaka. Om inte annat så kanske ni har märkt det tack vare att min hemsida inte har fungerat. I slutet av förra månaden låg den t ex nere i närmare en vecka, för alla kunder till Bredbandsbolaget (inklusive mig själv). Liknande avbrott har skett även med andra Internetleverantörer.

Så, är min DNSSEC-signering felaktig? Nej, den är helt korrekt.

Avbrotten har istället orsakats av fel i Internetleverantörernas DNS-resolvrar. Eller för att vara lite mer specifik, en bugg i programvaran BIND 9. Till dess att alla Internetleverantörer har åtgärdat sina DNS-resolvrar så kommer DNSSEC inte att fungera ordentligt. Och det kan ta åtskilliga veckor, månader eller år.

Så DNSSEC fungerar inte, men är det verkligen ett problem? Ja, i Sverige är det faktiskt det.

DNSSEC är ett hjärtebarn, ett högprioriterat projekt hos vår kära toppdomänsadministratör .SE. De har varit aktivt engagerade i utvecklingen av DNSSEC under väldigt lång tid och de vill inget hellre än att alla .se domäner ska köra DNSSEC. Trycket från .SE, gentemot deras registrarer, för att införa DNSSEC är massivt.

Faktum är att .SE har en DNSSEC-kampanj där de belönar sina registrarer, med en ekonomisk ersättning, för de DNSSEC-signerade .se domäner som de kan uppvisa. Denna ersättning sker två gånger om året och även om det inte är några jättesummor för varje DNSSEC-domän så blir det gemensamt ändå en bra slant i en bransch som präglas av obefintliga marginaler (där domännamn säljs för inköpspris).

DNSSEC-kampanjen har gått av stapeln en gång tidigare i år (i slutet av juni). Inför detta arbetade ett flertal registrarer med att införa stöd för DNSSEC och signera samtliga .se domäner hos sig. FS Data var en av dessa registrarer. Vi har, sedan ungefär ett halvår tillbaka, ett fullt fungerande DNSSEC-stöd både på server och systemnivå.

Inför den senaste DNSSEC-kampanjen så arbetade vi hårt med att signera och testa DNSSEC. Under detta arbete råkade vi dock ut för ovan nämnda bugg, vilket fick oss att stoppa vår planerade massignering med DNSSEC. En annan registrar som faktiskt utförde sin massignering, det var Loopia. De fick dock backa snabbt när de upptäckte DNSSEC-buggen.

Och nu till själva kärnan av allt detta:

  • Att .SE stimulerar DNSSEC med ekonomisk ersättning är en bra sak.
  • Att .SE inte informerar sina registrarer om DNSSEC-buggen är riktigt illa.

Ingenstans i informationen från .SE, avseende DNSSEC, har jag sett dem lyfta fram detta problem (och jag har granskat deras utskick ingående). .SE har dock en utmärkt dokumentation av hur man implementerar DNSSEC osv. Men när det gäller buggen, då är det knäpptyst.

Vi närmar oss raskt nästa ekonomiska ersättning i .SE:s DNSSEC-kampanj. När en registrar utför sina massigneringar så sker det ofta utan innehavarnas vetskap (det godkänns via avtal). I värsta fall kan detta leda till att ytterligare 10- eller 100-tusentals .se domäner blir DNSSEC-signerade och slutar fungerautan domänägarnas kännedom.

Det som behöver ske nu, det är att .SE måste se över sin strategi för DNSSEC. Den svenska toppdomänen .se ska inte behöva vara ett stort ”betatest” för DNSSEC. Funktionaliteten måste finnas på plats ordentligt innan DNSSEC trycks ut. Och information om sådana här problem måste gå ut ordentligt till registrarer, DNS-operatörer, Internetleverantörer osv.

Jag gillar DNSSEC som tusan. Men det här är ingen lek. DNSSEC kan kosta mer än det smakar.

Så sätter du upp en blixtsnabb WordPress-server

Uppdaterat 2013: OBS, denna guide är inte längre aktuell. Jag har skrivit en ny guide här:

FS Datas blogg, Guide till en blixtsnabb WordPress-server

Som du kanske vet så körde jag tidigare en stäng beta med världens bästa och snabbaste WordPress-hantering i molnet, under namnet Kaizr. Nu är denna tjänst lagd på is, men jag tycker det vore synd om min erfarenhet från denna tid gick helt förlorad.

Nu var Kaizr en, tekniskt sett, rätt så avancerad lösning, som bäst kommer till nytta i ett riktigt moln (dvs hos Amazon, Rackspace osv, inte i något svenskt låtsasmoln). Men det går att använda delar av Kaizr, t ex för att sätta upp en blixtsnabb WordPress-server.

Vilken bra idé! Det är dags för Sveriges första crowdsourcade serverinstallation.

Det här är en installation med fokus på en så snabb WordPress-server som möjligt, som alla får använda och bidra till. Jag är givetvis inte felfri, om jag får in förslag till förändringar/förbättringar så kommer det en uppdaterad version här framöver.

OBS: Notera att fokus för denna installation är snabbhet. Du bör själv vidta åtgärder för att säkra upp din server. Jag tar inget ansvar för eventuella fel eller problem som kan uppstå om du följer dessa instruktioner (även om jag svarar på era kommentarer så gott jag kan).

Serverinstallationen gäller för Ubuntu 10.10. Det går säkert att köra Debian eller motsvarande Linux-dist, utan större förändringar.

Världens snabbaste WordPress-server: Ubuntu, Nginx, PHP-FPM & MySQL

Alla kommandon och filer är markerade med en code-tagg här nedan. Jag förutsätter att du har grundläggande administrationskunskaper, så du kan navigera runt och hantera textfiler. Alla kommandon körs även med root-privilegier på servern. För enkelhetens skull utelämnar jag alla sudo-kommandon.

1. Börja med att uppdatera och uppgradera din server. Om du får frågor här så är det bara att välja standardalternativet.

# apt-get update && apt-get -y upgrade

2. Sen installerar vi lite saker som våra programvaror (främst PHP) är beroende utav. Denna lista går säkert att korta ner.

# apt-get -y install make bison flex gcc patch autoconf subversion locate unzip
# apt-get -y install build-essential libtool libpcrecpp0 libpcre3-dev libxml2-dev libmysqlclient16-dev libcurl4-openssl-dev libfreetype6-dev libgd2-xpm-dev libjpeg62-dev libpng12-dev libmcrypt-dev libmhash-dev libpspell-dev libming-dev libmm-dev libtidy-dev libxslt1-dev libevent-dev libc-client-dev autoconf2.13

3. Därefter installerar vi PHP med ett gäng olika tillägg. De viktigaste i sammanhanget är tilläggen för PHP-FPM och Xcache

# apt-get -y install php5 php5-cgi php5-cli php5-common php5-curl php5-fpm php5-gd php5-imap php5-mcrypt php5-mhash php5-mysql php5-pspell php5-remctl php5-sqlite php5-suhosin php5-svn php5-tidy php5-xcache php5-xmlrpc php5-xsl php-pear
# /etc/init.d/php5-fpm stop

4. Sedan installerar vi den ryska webbservern Nginx.

# echo "deb http://ppa.launchpad.net/nginx/development/ubuntu maverick main" >> /etc/apt/sources.list
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
# apt-get update
# apt-get install nginx
# /etc/init.d/nginx stop

På vissa VPS:er/servrar är Apache installerat som standard. För att undvika konflikter med Nginx, avinstallera samtliga Apache-relaterade program. Exakt kommando kan variera, beroende på vad som är installerat på din server, här är ett exempel:

# apt-get remove apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common

5. Och så installerar vi MySQL. Glöm inte bort lösenordet som du anger under installationen.

# apt-get install -y mysql-server

6. Till slut så konfigurerar vi lite småsaker på servern, främst relaterade till Nginx/PHP.

# cd /etc/nginx
# mv fastcgi_params fastcgi_params.old
# nano fastcgi_params

Lägg in följande innehåll:

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $http_x_forwarded_for;
fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 32k;
fastcgi_buffers 32 32k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

I samma mapp skapar vi även en fil som hanterar omskrivningar för WordPress, både med och utan WP Super Cache.

# nano wordpress_params.supercache

Lägg in följande innehåll:

if (-f $request_filename) {
break;
}
set $supercache_file '';
set $supercache_uri $request_uri;

if ($request_method = POST) {
set $supercache_uri '';
}
if ($query_string) {
set $supercache_uri '';
}
if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
set $supercache_uri '';
}
if ($supercache_uri ~ ^(.+)$) {
set $supercache_file /wp-content/cache/supercache/$http_host/$1index.html;
}
if (-f $document_root$supercache_file) {
rewrite ^(.*)$ $supercache_file break;
}
if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*.php)$ $1 last;
rewrite ^ /index.php last;
}
error_page 404 = //index.php?q=$uri;

Till sist så startar vi även tjänsterna för Nginx och PHP-FPM.

# /etc/init.d/nginx start
# /etc/init.d/php5-fpm start

Nu är serverinstallationen klar (men som sagt, glöm inte att säkra upp allt ordentligt).

Här är alla kommandon för att stoppa, starta och starta om tjänsterna på servern:

# /etc/init.d/nginx stop
# /etc/init.d/nginx start
# /etc/init.d/nginx restart
# /etc/init.d/php5-fpm stop
# /etc/init.d/php5-fpm start
# /etc/init.d/php5-fpm restart
# /etc/init.d/mysql stop
# /etc/init.d/mysql start
# /etc/init.d/mysql restart

Lägg upp en sajt på din blixtsnabba WordPress-server

Nu ska vi sätta upp en sajt på servern. Det är blir en egen ”virtual host”, som kör med en egen användare (till skillnad från t ex WordPress Multi-Site, där vi har en gemensam användare/virtual host för alla sajter). Detta underlättar vid felsökning, kvotahantering och bidrar även till ökad säkerhet.

1. Börja med att skapa en användare och en databas. Jag använder sulo_se som namn på användaren och sulo.se som domän på sajten.

# adduser sulo_se

Notera understrecket i användarnamnet. Inga punkter här inte.

mysql -u root -p
CREATE DATABASE sulo_se;
GRANT ALL PRIVILEGES ON sulo_se.* TO "sulo_se"@"%" IDENTIFIED BY "lösenord";
FLUSH PRIVILEGES;
EXIT;

2. Nu sätter vi upp en PHP-konfiguration för sajten.

# cd /etc/php5/fpm/pool.d/
# mv www.conf ../
# nano sulo.se.conf

Lägg in följande innehåll:

[sulo.se]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.owner = sulo_se
listen.group = sulo_se
listen.mode = 0666
user = sulo_se
group = sulo_se
pm = dynamic
pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2
pm.max_requests = 50
request_slowlog_timeout = 60s
slowlog = /var/log/php-fpm.log.slow

Det här är en rätt så sparsmakad och resurssnål konfiguration. Du bör verkligen läsa kommentarerna i www.conf för mer info.

Om du t ex vill lägga till ytterligare sajter, efter denna, så måste du välja en annan port för listen, t ex från 9000 till 9001. Detta måste även synkas med konfigurationen av Nginx (här nedan). Om du vill öka kapaciteten på sajten (ta emot fler samtidiga besökare) så kan du skruva upp antalet servrar.

3. Konfigurera Nginx för din sajt

# cd /etc/nginx/sites-enabled
# nano sulo.se

Lägg in följande innehåll:

server {
listen 80;
server_name sulo.se *.sulo.se;
server_name_in_redirect off;
client_max_body_size 64M;
access_log /home/sulo_se/sulo.se/logs/access.log;
error_log /home/sulo_se/sulo.se/logs/error.log;

location / {
root /home/sulo_se/sulo.se;
index index.php;
rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
}

location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/sulo_se/sulo.se/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

Här kan du t ex se listen-direktivet från konfigurationen av PHP-FPM (som ska öka om du lägger till ytterligare sajter). Det är värt att notera att vi lägger lite loggar, för enkel åtkomst, under /logs på din domän (t ex www.sulo.se/logs/). Du kan givetvis flytta eller lösenordsskydda dem om du vill.

4. Allra sist hämtar vi ner och installerar WordPress.

Du kan givetvis välja en nyare version av WordPress om en sådan finns. Vi passar likaså på att installera det svenska språkstödet.

# mkdir /home/sulo_se/sulo.se && cd /home/sulo_se/sulo.se
# svn co http://core.svn.wordpress.org/tags/3.0.4/ .
# mkdir wp-content/languages && cd wp-content/languages/
# wget http://svn.automattic.com/wordpress-i18n/sv_SE/tags/3.0.4/messages/sv_SE.mo
# cd -
# mkdir logs
# mv wp-config-sample.php wp-config.php
# nano wp-config.php

Ange dina databasuppgifter och spara filen. För att aktivera det svenska språkstödet, uppdatera följande variabel:

define ('WPLANG', 'sv_SE');

Till sist sätter vi rätt ägare på WordPress-installationen.

# cd /home/sulo_se
# chown -Rf sulo_se:sulo_se *

Därefter är det bara att starta om Nginx och PHP-FPM (se kommandon ovan). Sen kan du surfa in på sidan (förutsatt att domänen pekar till din server) och köra igång med din blixtsnabba WordPress-server.

Övrigt/tips på länkar & leverantörer

Förutom Google så finns det bra dokumentation här: Nginx, PHP-FPM och MySQL

När det gäller kapaciteten till din server så bör du åtminstone ha 1 GB RAM-minne. Även om t ex Nginx kräver mindre resurser än Apache så älskar WordPress (och PHP) RAM-minne. Glöm inte bort att vi även kör en databasserver här.

Jag har själv testat serverinstallationen med samtliga VPS:er hos FS Data och de funkar till 100 %. Det fungerar säkert även med VPS:er/servrar hos andra leverantörer, om än att det ger bonuspoäng i min bok om du väljer FS Data. 😉

Har du några frågor eller är något galet i serverinstallationen? Lämna en kommentar! Får du ihop allt och är skitnöjd med din nya WordPress-server? Bjud mig på en öl nästa gång vi ses!

Bortskänkes: spelbloggen.se

Ni kanske minns att jag har haft rätt så stora planer för spelbloggen.se. Det skulle förvisso fortfarande vara möjligt att förverkliga dessa idéer, men jag känner inte att jag har den tid som krävs för det. Jag vill istället fokusera på Reklamfritt.se och min egen (småhemliga) affärsidé.

Jag har därför funderat en del kring vad jag ska göra med domänen spelbloggen.se.

Det är nämligen en väldigt bra och värdefull domän, som jag säkert skulle kunna få ett femsiffrigt belopp för. Jag köpte den själv för flera tusen för ett par år sedan och en större slant skulle inte sitta helt fel (med tanke på vårt kommande tillskott).

Men det känns ändå inte riktigt bra.

sellout

Oavsett hur mycket pengar jag kan tjäna på spelbloggen.se så tar det mig emot att sälja den. Jag har alltid tyckt att det är fel att sälja domäner i andrahand. I en perfekt värld skulle det inte finnas en andrahandsmarknad för domäner, i en perfekt värld skulle alla domäner fylla ett syfte (istället för en domänspekulants portfölj).

Detta oavsett hur rumsrena domänpundarna är idag. 😉

Nej, någon försäljning kommer det inte bli tal om. Jag vill istället att denna domän ska användas ordentligt, att den kommer till nytta och skapar ett värde för dess ägare och användare. Därför kommer jag nu att skänka bort spelbloggen.se.

Är du sugen på att ta över spelbloggen.se?

Då vill jag att du skriver en kommentar till detta inlägg, där du berättar vad du vill göra med domänen. Den som kommer med det bästa förslaget (i mina ögon) får domänen. Rent konkret innebär det att jag delegerar om domänen för att därefter, om ungefär ett år, överlåta domänen (förutsatt att den hanteras väl).

Vad du vill göra med domänen spelar ingen roll, så länge jag kan se att det finns en ordentlig tanke bakom det. Om det handlar om tevespel eller inte spelar ingen roll, det kan lika gärna vara en blogg om t ex poker, stryktipset eller något annat.

Huvudsaken är som sagt att domänen kommer till nytta.

Domänen kommer att förlängas med ett år inom kort, så jag har inte bråttom med att hitta en ny ägare. När rätt förslag kommer in så delegerar jag om domänen enligt överenskommelse, samt berättar om det här i min blogg.

Om domänen inte sköts enligt överenskommelse så kan jag delegera om den (givetvis först efter en dialog). När domänen sedan överlåts så får den nya ägaren stå för överlåtelseavgiften. Men det är som sagt en bråkdel av domänens värde.

Må bästa förslag vinna nu.

David och Goliat

David vs. Goliat i KarateUnder min uppväxt, fram till dess att jag var nästan 20 år, så var jag med i en frikyrklig grupp (eller sekt). Det har bl a inneburit att jag har läst Bibeln, från pärm till pärm, åtminstone ett 10-tal gånger. Av alla berättelser från Bibeln finns det en som jag fastnade extra mycket för, en som jag än idag är väldigt fascinerad av.

Kampen mellan David och Goliat känner nog de flesta till. Han var ynglingen som ensam stod upp, enbart beväpnad med en slunga, mot en jättelik man och armé. Med en stark övertygelse och ett stort mod vann han mot alla odds.

David blev sedermera kung av Juda (nuvarande Israel) och förfader till Jesus. Om han inte hade bekämpat Goliat, om han hade lyssnat till de negativa tungorna och börjat tvivla, då hade vår historia sett helt annorlunda ut.

Det här har påverkat mig väldigt starkt.

Under hela mitt liv har jag sett upp till Davids bedrift. Det har inget med någon religion att göra, men jag har alltid brunnit för den ”lilla killen” (eller tjejen). Oavsett om jätten har varit stora människor i vardagen eller stora företag och stiftelser i arbetslivet så har jag bekämpat dem extra hårt.

När jag lämnade Binero så hade jag ett flertal alternativ till nytt jobb. Flera av dem innebar fräcka arbetsuppgifter, grymma förmåner och schysst lön. Men jag tackade nej till dem, för att istället satsa på en inte lika säker och välbetald uppgift.

Jag valde jobb efter mitt hjärta.

Reklamfritt.se

Reklamfritt.se har varit mitt jobb till 80 % de senaste 2 månaderna. Målet med denna sida och tjänst är inget mindre än att stoppa den pappersbaserade direktreklamen i Sverige. Med Reklamfritt.se kommer jag att ge järnet för miljön, för vår framtid och för alla konsumenter här i landet.

Det här är en kamp mot en bransch som omsätter 10 miljarder kronor om året.

Men även om fokus främst kommer att ligga på miljöfrågan så ska Reklamfritt.se även beröra frågor om teknik, företagsamhet och marknadsföring. För att uppnå vårt mål så måste vi givetvis erbjuda digitala alternativ till den pappersbaserade direktreklamen.

Reklamfritt.se är en omöjlig uppgift, eller en underbar utmaning.

Oavsett mitt arbete med Reklamfritt.se så kommer jag att fortsätta blogga här. Jag arbetar trots allt fortfarande med ett eget projekt till 20 % (och mer därtill). Och även där ska jag döda jättar.

Ps, vet du förresten vad Davids bästa vän hette? 😉

Stilla mitt hjärta

Inlägget jag skrev igår om Bineros blogg rörde, inte helt oväntat, upp en del känslor.

Utöver kommentarerna här i bloggen har jag även talat med flera personer med insyn. De som räknas. Och jag har förstått att min reaktion, om än att den var förståelig, kanske inte var helt berättigad. Åtminstone inte utåt sett.

Det finns saker som inte framgår av inlägget, men som påverkade dess utformning.

Jag är en känslosam människa. Gårdagens inlägg reflekterade detta. Om jag ser något som är rätt så kämpar jag för det, om jag ser något som är fel så kämpar jag mot det. Det är både på gott och ont.

Även om det var en sanningsenlig och personlig reflektion, så var inlägget inte fullständigt. Med facit i hand kan jag konstatera att det var fel av mig att publicera det. Jag får givetvis be om ursäkt för det.

Gårdagens inlägg kommer dock att kvarstå, med referens till detta inlägg. Allt i öppenhetens namn.

Här framöver tänker jag undvika att blogga om Binero. Mina erfarenheter där har varit en lärdom. Det jag har upplevt, och fortfarande upplever, efter Binero är av värde likaså. Men jag sparar detta till ett senare tillfälle. Jag har trots allt länge funderat på att skriva en bok om mina 10 år i domän- och webbhotellsbranschen.

Från och med nu kommer min blogg främst handla om webbhotell och domännamn i allmänhet, i kombination med företagande och marknadsföring. Till detta vill jag fortsätta reflektera över öppenhet och vänlighet. Mer ödmjukhet ska in likaså.

Samt min nya passion… miljön. 😉