• Hejdå, VMware - Hej Proxmox!

    ​Jag har ju uppenbarligen svårt att lära mig av tidigare misstag, eller så är jag bara oerhört envis. Jag har nämligen försökt migrera mitt hemmalabb till Proxmox tidigare. Två gånger till och med. Varje gång har jag ångrat mig, men denna gång gick det faktiskt vägen och detta tack vare två nya faktorer i sammanhanget.

    Det ena är det faktum att jag numera endast behöver köra en enda server istället för två som tidigare. Det andra är att jag byggt en ny lagringslösning.

    Låt mig förklara

    Mina gamla grejer i hemmalabbet byggde på ett SAN som använde Fibre Channel för sin kommunikation. När jag försökte köra Proxmox i ett kluster med en delad lagringslösning baserad på Fibre Channel slutade det inte väl - det hela baserades på att ena klusternoden initierade och “ägde” anslutningen till SAN:et som monterades som en LVM, som man i sin tur sedan delade ut till andra noder i klustret. Problemet var att trafiken till SAN:et då gick från en nod till en annan nod till SAN:et och sedan tillbaka, och prestandan blev därefter. Man kunde lösa det genom att köra Multipath men det blev aldrig riktigt bra, åtminstone inte så bra som det fungerade i VMware ESXi 6.5 som jag var van vid.

    Servrarna var inte heller särskilt purfärska men då jag de senaste 18-månaderna samlat på mig modernare grejer (mest genom gåvor och fynd jag gjort) har jag pö om pö uppgraderat mitt hemmalabb med. Detta första faktum har lett till att jag nu har aningen modernare servrar (två Dell R620) som jag migrerat ihop till enda server genom att trycka in allt minne från den ena i den andra. Detta har gett en maskin med 32 CPU-kärnor och 384 gigabyte internminne. Det räcker gott och väl för mina behov.

    Det andra är att jag också investerat i ett bättre nätverk där jag kan köra 10GbE mellan alla servrar. Detta, plus det faktum att jag byggt ett nytt SAN med en HP-server (D170 generation åtta, nedklockad till sin lägsta hastighet för att spara ström), åtta 3TB-diskar, tre SSD-diskar och lite mer minne i den maskinen och vips så kunde jag bygga mig en snabb modern lagringslösning baserad på TrueNAS (före-detta FreeNAS).

    Varför vill jag då byta bort VMware och mitt gamla FC-SAN?

    Problemen är flera: mina Dell R620-servrar stöds inte av något nyare än VMware ESXi 6.5, vilket börjar bli till åren kommet. Det andra är att mitt FC-SAN, som visserligen fortfarande fungerar, är 16-17 år gammalt och inte fungerar något vidare med hårddiskar större än 1TB. Det gör att jag är begränsad till hur mycket yta jag kan få ut från det SAN:et vilket ger drygt 12TB i RAID-5. I takt med att diskarna går sönder, för de gör ju det till slut, så är det heller inte särskilt roligt att behöva köpa 1TB-diskar att ersätta de gamla med.

    FC-SAN:et är inte överdrivet snålt när det gäller elförbrukning heller så det vore också trevligt att hyvla bort några watt på elräkningen så det fick bli ett nytt bygge.

    Kort sagt: jag ville bygga en ny miljö på modernare hårdvara och mjukvaror som fortfarande uppgraderas och som också är gratis.

    Så jag satte igång att åter igen titta på Proxmox. Och om det ska jag berätta om nu.

    Migrering

    Förr i tiden (det vill säga, i mina två tidigare försök, fick man vackert överföra filerna från VMware i form av VMDK-filer till en annan storage och sedan konvertera dem till qcow2 eller vad man nu ville har för format på sina virtuella diskar. Jag hade helt missat att det finns ett verktyg som heter OVFTool som gör det väldigt enkelt att överföra VMware-maskiner till Proxmox via SSH och HTTPS. Den eller de maskiner du vill överföra måste vara avstängda vid flytten men i övrigt är det bara att på din Proxmox-server, eller på en annan maskin du vill använda köra, kommandot och sedan vänta. För det tar en del tid, i synnerhet om diskfilerna till dina virtuella servrar är flera hundra gigabyte stora.

    Efter att man migrerat över sina virtuella maskiner är det dags att importera det hela till Proxmox. Detta sker med fördel i CLI-gränssnittet som du kommer åt genom att SSH:a till din Proxmox-server:

    qm importovf vm_id /namn_på_vm/namn_på_vm.ovf namn_på_lagring

    Det ovanstående kan behöva en förklaring, så här kommer den:

    vm_id = nästa lediga ID i Proxmox. När du skapade din första virtuella maskin i Proxmox fick den ett ID, ett siffervärde, som är 100. Därifrån stiger nummerserien automatiskt för varje ny server du skapar, men om du importerar en virtuell maskin på det ovanstående sättet måste du själv ange ID-numret. Enklast att göra detta är att kolla i Proxmox webbgränssnitt hur läget är - om den sista virtuella maskinen du kör har ID 110 så använder du 111 vid importen, och så vidare.

    namn_på_vm/namn_på_vm.ovf = när du exporterar en virtuell maskin med OVFTool skapas en katalog automatiskt som döps till samma namn som den virtuella maskinen. I denna katalog läggs sedan de filer som du ska importera. Om du har exporterat en virtuell maskin från VMware som heter “mail” så kommer sökvägen således vara “/mail/mail.ovf”.

    namn_på_lagring = namnet på den lagringslösning du vill placera den importerade virtuella maskinen. Har du ett SAN så kanske det heter “SAN01”. Växla över vyn i Proxmox webbgränssnitt till “Datacenter” och välj sedan “Storage” så ser du vad dina lagringslösningar heter i kolumnen döpt “ID”.

    Dags att starta

    När du migrerat och senare importerat dina virtuella servrar är det dags att börja starta dem. I mitt fall har jag tre olika typer av virtuella maskiner: FreeBSD, CentOS 7 och Windows Server.

    I fallet FreeBSD är det inte svårt att komma igång: lägg till ett nätverkskort till den importerade virtuella maskinen, se till att det är av typen VirtIO, se till att hårddisken/hårddiskarna är satt som en SCSI-hårddisk och sedan är det bara att starta den virtuella servern. Du kommer behöva redigera /etc/rc.conf och ändra namnet på nätverkskortet till vtnet0, ta bort eventuella referenser till VMware och sedan är det bara att starta om och köra vidare.

    I fallet CentOS kommer den virtuella maskinen att vägra boota om du sätter hårddiskgränssnittet till något annat än IDE. Det är också det långsammaste gränssnittet och därför vill du väldans gärna kunna köra VirtIO som gränssnitt för det. Innan du startar den virtuella maskinen skapar du ett nätverkskort som du sätter som VirtIO. Därefter konfigurear du hårddiskarna som IDE, starta sedan upp den virtuella maskinen, gå in i nätverkkonfigurationen i /etc/sysconfig/network-scripts och döp först och främst om konfigurationsfilen, som innan kanske heter ifcfg-ens160 till ifcfg-eth0. Därefter öppnar du filen med en vettig editor, raderar raden med UUID-värdet och ändrar sedan dessa två värden till eth0:

    NAME="eth0"
    DEVICE="eth0"

    Med detta klart är det dags att lösa problemet med varför din virtuella maskin inte vill boota med VirtIO som gränssnitt för diskarna:

    sudo dracut --add-drivers "virtio_pci virtio_blk virtio_scsi virtio_net virtio_ring virtio" -f -v /boot/initramfs-`uname -r`.img `uname -r`

    Följt av:

    sudo sh -c "echo 'add_drivers+=\" virtio_pci virtio_blk virtio_scsi virtio_net virtio_ring virtio \"' >> /etc/dracut.conf"

    Sedan kan du stänga ner den virtuella maskinen, avmontera hårddisken/hårddiskarna och montera upp dem igen och då välja VirtIO som gränssnitt.

    Kör du Debian redigerar du filen /etc/initramfs-tools/modules och lägger till följande:

    virtio
    virtio-blk
    virtio-ring
    virtio-pci
    virtio-net

    Därefter kör du kommandot update-initramfs -u -v och sedan kan du stänga ner den virtuella maskinen, avmontera hårddisken/hårddiskarna och montera upp dem igen och då välja VirtIO som gränssnitt.

    Windows då? Här blir det lite knepigare. Se till att alla hårddiskar är satta med IDE som gränssnitt. Skapa sedan en ny hårddisk som du kopplar till den virtuella maskinen, den kan vara en gigabyte stor eller så, som du sätter som VirtIO. Innan du startar maskinen ser du till att ha laddat ner denna ISO-fil som du gjort tillgänglig i Proxmox. Denna ISO-fil monterar du som en virtuell CD-ROM-enhet till din virtuella Windowsmaskin. När detta är gjort startar du upp maskinen.

    Om du inte avinstallerat VMware Tools från servern så är det dags att göra det nu. När det är avinstallerat går du in i Device Manager, slår på visning av gömda enheter och därefter avaktiverar du eventuella andra nätverkskort som hängt med från VMware. Starta sedan om den virtuella maskinen.

    Installera därefter drivrutinerna från ISO-filen med hjälp av installationsprogrammet, och installera också gästagenten som finns i samma ISO-fil. Därefter kan du konfigurera nätverkskortet med rätt IP-adress, och så vidare. Stäng sedan ned den virtuella maskinen. Slutligen avmonterar du alla hårddiskarna, monterar upp de som faktiskt hör till maskinen (du kan radera den lilla extradisken du skapade förut) med VirtIO-gränssnittet och sedan kan du starta din virtuella Windowsmaskin igen och nu ska den fungera finfint.

    Övriga intryck och råd

    När man går från en beprövad plattform som VMware ESXi till Proxmox och inser att ens virtuella Windowsservrar faktiskt blir snabbare på samma fysiska hårdvara och med samma inställningar i sin virtuella hårdvara så inser man snart att Proxmox och dess underliggande virtualiseringsmotor KVM sparkar stjärt. Det finns inget annat sätt att beskriva det.

    Med det sagt så är Proxmox inte bara guld och gröna skogar. Jag fick exempelvis inte kopplingen mot iSCSI att fungera ordentligt i en klusterinstallation, åtminstone inte med TrueNAS som operativsystem på lagringsenheten. Jag fick därför, akompanjerat av åtskilliga svordomar, tömma iSCSI-lagringen, radera den och köra allt via NFS istället vilket har fungerat över förväntan. Om du ändå vill köra iSCSI kan det vara värt att nämna att det inte är en vidare god ide att göra detta över en LACP-trunk där du kombinerar flera 1GbE-gränssnitt till ett enda, då iSCSI vad jag förstår inte reagerar så bra på det. I mitt fall har jag 10GbE-nätverk mellan alla servrar och min lagringsenhet varför det i kombination med NFS har fallit ut extremt väl. 10GbE-switchar är så pass billiga numera så det är varmt rekommenderat att investera i en sådan om du ska nyttja nätverksbaserad lagring, oavsett om det är iSCSI eller NFS-baserad dito.

    Det finns mycket annat som jag gillar i Proxmox, som exempelvis att konsolen till de virtuella maskinerna fungerar i de allra flesta webbläsare utan att bråka det minsta. Den inbyggda backuplösningen i Proxmox fungerar också riktigt bra, vilket jag är glad för eftersom backuplösningar för virtuella maskiner i VMware ESXi kan bli en kostsam, och komplicerad, historia.

    Huruvida Proxmox är “enterprise ready” som de själva säger ska jag kanske låta vara osagt, men det finns en hel del kvar att jobba på där.

    Exempel på det är att en server med redan existerande virtuella maskiner i sig inte kan gå med i ett kluster - rådet från Proxmox-teamet är att ta backup på alla sina virtuella maskiner, ta bort dem från Proxmox, gå med i klustret och sedan importera dem igen. Ett annat exempel är om man kör flera fysiska maskiner i ett kluster så kan samma lagringsenhet visa olika storlek så väl som olika ledig diskyta beroende på vilken nod i klustret du tittar på detta i. Ett exempel för mig var när min NFS-lagring på ena noden i klustret var på 14TB och i den andra noden var på 400GB. Det är kanske en skitsak, men för mig blir det snabbt också en fråga om ett mindre magsår - vilken av noderna visar rätt egentligen, och, kommer något bli helt galet om man skriver data till nätverkslagringen från den nod som visar fel?

    En sak som irriterar mig rätt mycket är vad som visas i bilden ovan. Här håller jag på och live-migrerar en virtuell maskins hårddisk till en annan lagring. Samtidigt vill jag ge samma server mer internminne, men tji fick jag - pågår en operation med en virtuell maskin i Proxmox så är den låst för alla andra former av justeringar eller operationer. Det går inte ens att stänga av en virtuell maskin från det grafiska gränssnittet så länge en annan operation på samma virtuella maskin pågår. Tyvärr får man, om man verkligen vill stänga av en virtuell maskin riktigt jävla mycket, SSH:a in på Proxmox-servern och leta fram vilken process som kör den virtuella maskinen i fråga och döda den med kill -9 pid.

    Proxmox kostar ingenting att använda, och med tanke på allt man faktiskt får så är det en trevlig lösning. Det är klart det vore trevligt med automatisk balansering i klustret där virtuella maskiner skickas till en viss nod i klustret beroende på belastning och lediga resurser i andra noder i samma kluster men då pratar vi inte bara VMware ESXi utan också VCenter, och det kostar ordentligt med penningar.

    Det tog mig en vecka av pillande, meckande och trixande innan hela min VMware-installation med strax över 40 virtuella maskiner var migrerad till Proxmox. Jag kunde använda mig av en extra server jag har i racket som “mellanlandning” medan jag tömde min VMware ESXi-server så nedtiden för sajter och annat blev inte så jobbigt stor som jag först hade fruktat. Jag har inte, så här tredje gången gillt, ångrat bytet eller haft en jobbig känsla i magen som jag hade efter de två första försöken så jag hoppas (ta i trä, med mera) att detta kommer fungera väl i framtiden.

  • Hejdå, Twitter

    Häromdagen satt jag i bilen på väg hem och lyssnade på en av mina favoritpoddar, Road work. Den här podden, tillsammans med andra poddar där John Roderick är en av deltagarna, hade tagit en paus efter att Roderick under slutet på 2020 hamnat i blåsväder efter ett skämt han postat på Twitter misstolkats av flera personer.

    Efter att han hamnat i blåsväder raderade han sitt Twitterkonto och meddelade via sin webbsajt att han skulle ta en paus från poddande och annat ett tag för att samla tankarna. Gott så.

    Efter att nya poddavsnitt med Roderick började dyka i min poddspelare noterade jag att en saknades: Road work. Samtidigt hade jag hört i det senaste avsnittet av Roderick on the line att Roderick blivit “dumpad” av en av sina poddar, utan att nämna vilken.

    Jag började gräva lite i vilken podd det var och såg att Dan Benjamin, den andra deltagaren i Road work, hade postat på Twitter att han var förvirrad, frustrerad och besviken över “en hel del saker”. Jag drog då, felaktigt, slutsatsen att Benjamin, som äger poddnätverket 5by5, hade dumpat Roderick från podden Road work.

    En annan lyssnare i samma twittertråd frågade hur man bäst kunde stödja Roderick och jag svarade något i stil med “eftersom det verkar som att Dan Benjamin har dumpat John Roderick så har Roderick en Patron-insamling man kan stödja istället”.

    Det visade sig att det var en annan podd Roderick var med i, Friendly Fire, som hade dumpat honom men de hade flera avsnitt kvar att släppa även efter att de dumpat honom och därför hade nya avsnitt dykt upp. En person i twittertråden påpekade detta för mig och jag bad Dan Benjamin om ursäkt för mitt misstag.

    När jag lyssnade på det senaste avsnittet av Road work i bilen så beskrev en lätt frustrerad Dan Benjamin hur han upplevde att han ofta blir missförstådd, och som exempel läste han inte bara upp min tweet i ämnet utan också mitt namn.

    Där och då var jag inte långt från att köra av vägen. Inte för att jag kände att det var coolt att bli omnämnd, utan snarare var det jobbigt att bli omnämnd över huvudtaget, och i synnerhet under sådana omständigheter.

    Innan detta hände hade jag funderat mer och mer på vad Twitter gör med mitt liv. Det är, åtminstone för mig, ibland lätt att dras med i negativitet på Twitter. Det är lätt att göra ett utfall mot exempelvis en politiker som sagt eller gjort något dumt, att retweeta en twitterinlägg tar en bråkdel av en sekund och följderna av det är givetvis svåra, för att inte säga omöjliga, att överskåda. Kanske deltar man i ett drev mot en person, ett företag eller ett politiskt parti utan att förstå det själv.

    När hela händelsen med Road work som jag beskrev ovan hände så mådde jag dåligt. Jag kände mig dum, det jag hade gjort var pinsamt men det kändes heller inte ok att bli uthängd i en podd med ~50000 lyssnare varje vecka. Jag hade börjat få arga meddelanden i min inbox på Twitter om detta, vilket jag senare förstod hängde ihop med att avsnittet hade släppts någon dag innan jag lyssnade på det, och jag försökte svara på inläggen så resonligt och ärligt som möjligt och försökte “äga problemet” men det spelade väldigt lite roll - jag var i deras ögon en idiot.

    Man kan givetvis argumentera att Dan Benjamin hade kunnat twittra om att Road work tagit en paus men nu var på väg tillbaka, vilket han såvitt jag vet inte gjorde. Man hade kunnat tycka att bristen på information i kombination med att Roderick i det senaste avsnittet av Roderick on the line beskrev hur han blivit dumpad av en podd, utan att nämna vilken, hade kunnat bidra till att folk drog slutsatser eftersom fanns en stor en brist på information. Det gick inte att kontakta Roderick själv via Twitter eftersom han raderade sitt konto. Man hade också kunnat argumentera att jag borde låtit bli att twittra som jag gjorde eftersom jag faktiskt inte hade några fakta i ärendet utan bara hade dragit en slutsats som på pappret, åtminstone för mig, inte framstod som helt osannolik.

    Men jag hade fel, och det fick jag reda på med råge.

    Kombinationen av mina funderingar på Twitter som helhet och händelsen med Dan Benjamin och Road work gjorde att jag kände att Twitter inte gav mig någonting längre. Postade jag en tweet om hur elpriset var högt och att Miljöpartiet kanske borde fundera över sin energipolitik så kom det snabbt hatfulla kommentarer om invandring och allt möjligt som andra var arga för att Miljöpartiet har en liberal inställning till.

    Det är som att många, men inte alla, som använder sociala medier överlag allt mer för att leta efter saker att bli arga på. Kanske är det en vrede som finns inom många ute i världen men som inte visar sig förrän de får ett forum som Twitter eller Facebook att ventilera dessa åsikter via.

    Jag tillhör inte den kategorin människor, och jag vill inte vara en del av den kategorin heller. För drygt två år sen rensade jag ut vilka jag följde på Twitter och Facebook, och inte långt därefter raderade jag mitt konto på Facebook.

    Nu, drygt två år senare, är det mitt Twitterkonto, som jag haft sedan 2007, som fått stryka på foten. Så här några dagar senare kan jag ärligt säga att jag inte saknar Twitter, tvärtom känner jag mig mer harmonisk och kan andas lite lättare. Vi behöver alla fler positiva inslag i våra liv, i synnerhet med tanke på den pandemi som plågat i princip hela världen i över ett år nu, men också överlag.

    För att citera John Roderick: “sociala medier är inte det samhälle du lever i”. Jag håller helt med om det. Vi tycks ha glömt bort vad det innebär att ha samtal med varandra, att träffa nya vänner och att umgås öga mot öga. Givetvis har pandemin har inte gjort det enklare men sociala medier gör det definitivt inte särskilt mycket bättre heller.

    För de som vill följa mig i något Twitterliknande forum finns jag fortfarande på Mastodon, där samtalen är betydligt mer sansade (om man rör sig i rätt kretsar). Du är välkommen dit du också om du tröttnat på Twitter.

  • Spotifys Dropbox-problem

    Spotify är utan tvekan ett fenomen. Sedan bolaget startades i maj 2006 har bolaget vuxit till en global gigant inom musikdistribution via Internet. 2019 hade bolaget enligt Wikipedia 4405 anställda och under tredje kvartalet 2020 hade bolaget 130 miljoner betalande användare.

    Med allt det sagt borde Spotify anses vara en framgångssaga, men det är inte riktigt så enkelt. För att Spotify skulle överleva från starten för snart 15 år sedan fram till idag har det levt på främst investeringar och lånade pengar och fram till tredje kvartalet förra året hade bolaget gått med 29,3 miljarder kronor i förlust eller drygt 2,5 miljarder i förlust per år i genomsnitt från 2008 fram till tredje kvartalet 2020, och än så länge visar de inga tecken på att faktiskt gå med vinst.

    Missförstå mig inte, intäkter från 130 miljoner betalande användare är inget att fnysa åt, men det är många som ska dela på de pengarna och bolaget är ännu så länge väldigt långt ifrån att ens kunna bära sina egna kostnader, än mindre visa en faktisk vinst.

    Givetvis ökar bolagets intäkter, dels i takt med att de får fler och fler betalande användare men också genom återkommande prishöjningar. Sedan oktober förra året har bolaget exempelvis höjt priset på sitt Premium-konto, vilket medger upp till sex separata konton på en räkning, med 20 kronor per gång vilket gör att priset gått från 149 kronor till 189 kronor i månaden, 40 kronor dyrare än Apples motsvarande erbjudande för samma antal användare i ett konto genom Apple Music.

    Spotify har på olika sätt försökt utöka sitt utbud i sin musikspelare med exempelvis poddar. Bolaget har haft poddar i många år men enskilda publicister som undertecknad och Fredrik Björeman kunde inte ansluta vår podd till tjänsten förrän till för några år sedan då Spotify plötsligt bestämde sig för att låta alla lägga till sina poddar i tjänsten. Spotify har också köpt ett par företag som arbetar med att producera poddar och på så sätt fått över en viss mängd innehåll som har kunnat göras exklusivt för Spotifys kunder. Men det är också allt som egentligen hänt, utöver att bolaget fortsatt etablera sig i nya länder och fortsatt ta in pengar från nya investerare för att överleva.

    Antalet betalande användare av tjänsten har som synes ökat stadigt genom åren och från 2016 får man anse att tillväxten varit stadigt växande.

    Ok, vad är då problemet som Spotify står inför? Börskursen ser överlag bra ut (se nedan) så “marknadens” förtroende har de ju?

    Problemet är nämligen enkelt att identifiera men desto svårare att lösa : vad ska Spotify göra härnäst?

    Givetvis kan de lägga till videomaterial, locka över kända Youtubers med miljoner prenumeranter till plattformen och betala dem väl för besväret precis som de gjort med en handfull utvalda kända poddare. Men sen då? Ska de bli en plattform för allt som rör media där även tv, film och liknande material ingår? Ska de som Apple försöka startade strömmande radiostationer?

    Dropbox-problemet

    Spotify har ett Dropbox-problem. Precis som Spotify är Dropbox ett företag som startade med ett problem och en lösning på detta: synka filer mellan datorer. De löste problemet med en genial lösning som under många år var geniunt uppskattad av miljontals användare, men precis som Spotify så ställdes Dropbox inför samma problem: vad ska vi göra nu? Precis som med Spotify så eldades Dropbox på av investerare som ville se fler betalande användare, högre omsättning och därmed potentiellt en högre avkastning på sin investering den dag de bestämde sig för att sälja sin andel. Inga konstigheter med det, men Dropbox var piskade att bygga ut sin enkla, geniala plattform med funktioner som få faktiskt vill ha.

    Vad som en gång var en enkel lösning för att synkronisera filer har nu förvandlats till en plattform för att samarbeta med andra i olika webbaserade verktyg. Plattformen och dess erbjudande är rörig och så långt ifrån vad Dropbox en gång var som man kan komma, och numera finns det gott om alternativ, både gratis och inbyggda funktioner i form av iCloud Drive från Apple och OneDrive från Microsoft som har en tajtare integration i sina plattformar.

    Steve Jobs hade rätt när han beskrev Dropbox som “en funktion, inte en produkt” - det var bara en tidsfråga innan Apple och andra bolag erbjöd samma funktion för samma, mindre eller inget pris alls.

    Kanske är möjligheten att lyssna på musik över Internet på väg att bli en funktion? Apple verkar tro det - Spotifys huvudkonkurrent som öser in användare och intäkter från sina olika tjänsteerbjudanden där musik är ett av dem.

    Apple insåg för länge sedan att de hade ett problem: de kommer inte kunna sälja datorer, telefoner och surfplattor i all framtid, och även om de tar fram nya produkter som säljer som glass i Saharaöknen så kommer marknaden för Apples dyra, exklusiva produkter inte att växa i den takt bolaget behöver för att kunna fortsätta leverera nya fantastiska resultat. Så de började med .Mac, som senare blev MobileMe, som senare blev iCloud. Under tiden denna transformation pågick hade Apple också börjat sälja musik via iTunes-butiken och snart sålde de också filmer och tv-serier. Snart kunde man hyra filmer och vips så hade bolaget en separat post i sin redovisning som de kort och gott kallar “tjänster”.

    Apple kunde göra detta för att de hade redan ett ben att stå på i form av hårdvara (först iPod, senare iPhone, iPad, Mac, Apple watch osv) som behövde innehåll i form av bland annat musik. De kunde helt enkelt ställa ner andra benet på backen och vips så hade de tjänster och produkter. Två ben som kompletterar varandra där ett ben tar ett steg framåt och snart följer det andra benet efter.

    Ett ben att stå på

    Spotify, precis som Dropbox, står och hoppar på ett ben och det benet kommer de inte kunna hoppa på i all framtid. Det finns en smärtgräns för hur mycket kunderna vill betala för Spotifys utbud, oavsett hur mycket Daniel Ek vill maximera bolagets tillväxt. Spotifys jakt på nya betalande kunder ska betalas av de redan befintliga kunderna, och som en (numera före-detta) betalande kund är det inte vad man vill höra, eller inse.

    Jag tror inte Spotify kommer försvinna imorgon. De har överlevt i snart 15 år men i takt med att bolaget fortsätter försöka växa och bli ännu större så har de också en utmaning i att inte tappa de tre faktorer som tog dem dit de är idag: skivbolagen, investerarna och kunderna.

  • Björeman // Melin, avsnitt 241: En kille som vill rädda en tjej

    Avsnitt 241 av min och Fredriks podd är speciell av flera anledningar: vår gemensamme vän Christian är med och vi fick också chansen att diskutera Microsofts kommande ändringar av Outlook, President Trumps senaste äventyr och amerikansk politik i största allmänhet. Vi hann också med en kortare diskussion om filmen Tenet.

    Lyssna gärna.

  • Installera Mastodon i FreeBSD 12.2

    Som tidigare meddelats har jag börjat migrera bort mina CentOS 7 servrar till FreeBSD 12.2 istället. I vissa fall har det varit enkelt, och i andra fall har det varit ett rent helskotta. I skrivande stund har jag precis klarat av en migrering: min Mastodon-server, och jag har 2-3 kvar som är riktigt jobbiga också, men vi korsar den bron när vi kommer till den som det brukar heta. Om du vill läsa lite mer om mina tankar om Mastodon kan du göra det här.

    Att installera Mastodon

    Börja med att installera Mastodon på en server med FreeBSD. Om du gör den till en server som tillåter registreringar så kan du tänka på att gott om minne, processorkraft och diskyta kommer bespara dig problem i framtiden. Min Mastodon-server har ett 20-tal användare, mer eller mindre, aktiva, och min databas låg på närmare en gigabyte i storlek och katalogen med bilder och annat som användarna postat eller fått i sina flöden uppgick till 70-80 gigabyte. Servern jag kör det på har två processorkärnor och åtta gigabyte internminne, vilket säkert går att banta lite men jag gillar marginaler och servern tuffar på bra som den är:

    Innan du sätter igång och installerar Mastodon är det bra att läsa på lite. Det finns gott om dokumentation att läsa, och det enda som saknas egentligen är det där lilla problemet: det finns ingen installationsguide för oss som kör FreeBSD. Tidigare fanns Mastodon paketerat via FreeBSD:s inbyggda pakethanterare men det har försvunnit av någon anledning.

    När du installerat din server, gett den ett fullständigt värdnamn i /etc/rc.conf (inklusive domän och tld) så kan du börja installera lite paket:

    $ pkg install bash sudo

    Därefter är det dags att installera ännu fler paket. Här är det frestande att installera senare versioner än de jag listar här nedan men problemet är att Mastodon exempelvis inte stödjer den senaste versionen av Ruby så följ denna guide så ska det gå bra:

    $ pkg install git imagemagick-nox11 ffmpeg libxml2 libxslt gcc protobuf pkgconf autoconf automake gmake bison python readline ncurses openssl libyaml icu libffi gdbm libidn redis postgresql96-server postgresql96-contrib postgresql96-client ruby-2.6 ruby-26-gems rubygem-bundler node yarn npm nginx

    Därefter skapar du användaren för Mastodon:

    $ pw useradd -n mastodon -u 144 -c "Mastodon User" -m -d /usr/local/www/mastodon -s /usr/local/bin/bash 

    Sedan är det dags att “installera” Mastodon:

    $ su - mastodon
    $ git clone https://github.com/tootsuite/mastodon.git live
    $ cd ~/live
    $ git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
    $ bundle install -j$(getconf NPROCESSORS_ONLN) --deployment --without development test
    $ yarn install --pure-lockfile
    $ exit

    Konfigurera PostgreSQL

    Att lattja med databasen som körs med Mastodon är ett kapitel för sig. Det finns många varianter på hur man gör detta men jag listar hur jag gjort här och det har fungerat.

    Först initierar du databasen:

    $ /usr/local/etc/rc.d/postgresql initdb

    Därefter startar du PostgreSQL:

    service postgresql onestart

    Därefter skapar du användare och databas för Mastodon:

    $ sudo su - postgres
    $ psql
    CREATE USER mastodon CREATEDB;
    CREATE DATABASE mastodon_production;
    GRANT ALL PRIVILEGES ON DATABASE mastodon_production TO mastodon;
    \q

    Konfigurera Nginx

    Nginx fungerar som en proxy mellan Mastodon och resten av omvärlden. Det är mot Nginx du skickar trafiken från ditt LAN och WAN där Nginx tar emot trafiken på port 80 eller 443 och skickar den “bakåt” till Mastodon på port 3000 och 4000.

    Jag har lagt upp mina konfigurationsfiler här som du kan ladda ned och titta på. Notera att konfigurationsfilen för Mastodon ska placeras under katalogen conf.d i rootkatalogen för Nginx som är /usr/local/etc/nginx/.

    Det är också en god idé att du tittar på att installera Let’s Encrypt och skaffar dig ett certifikat till din Mastodon-server. I och med att certifikatet hanteras av Nginx är detta enkelt och inget denna guide går igenom.

    Starta sedan Nginx med kommandot service nginx onestart

    Skapa serviceobjekt för Mastodon

    Mastodon består av tre olika komponenter som ska startas av operativsystemet genom att placera tre filer i /usr/local/etc/rc.d. Mina tre exempel på dessa filer kan du ladda ner här. Värt att notera är att dessa filer placerar process-id-filerna (pid) i /var/run - du kan ändra detta själv i filerna efter tycke och smak, men notera att du sedan måste göra motsvarande ändringar i andra filer i Mastodon oavsett om du använder samma inställningar som jag eller egna, nämligen dessa två:

    ~/live/config/pumba.rb - på rad 4 lägger du in följande rad:
    pidfile '/var/run/mastodon_web.pid'

    ~/live/config/sidekiq.yml - längst ner i filen lägger du in följande rad: :pidfile: /var/run/mastodon_workers.pid

    Du kan behöva justera rättigheterna för /var/run om PID-filerna inte skrivs där.

    Gör de tre processfilerna körbara med följande kommando:

    chmod +x /usr/local/etc/rc.d/mastodon_*

    Justera Redis för lokala anslutningar

    I Redis konfigurationsfil finns det tydliga tecken på att Redis ska acceptera anslutningar från localhost (127.0.0.1) på port 6379 i och med denna rad:

    bind 127.0.0.1

    Av någon anledning räcker inte detta utan jag fick modifiera raden så här:

    bind 127.0.0.1 192.168.1.10 där 192.168.1.10 är IP-adressen på Mastodon-servern. Denna IP-adress ersätter du givetvis med den faktiska adressen på din egna server.

    Förbered Mastodon

    Det är dags att förbereda Mastodon för sin första körning.

    Skapa katalogen för loggar:

    $ mkdir /var/log/mastodon
    $ chown mastodon /var/log/mastodon

    Gå över till Mastodon-användaren med följande kommando:

    sudo su - mastodon

    Ge sedan följande kommando:

    $ cd ~/live $ RAILS_ENV=production bundle exec rake mastodon:setup $ RAILS_ENV=production bundle exec rails assets:precompile

    När detta är klart kan du sedan redigera ~/live/.env.production. Notera särskilt att du måste konfigurera någon form av e-postfunktion så användare kan registrera sig hos dig, få e-post med information om nya följare, och så vidare.

    Starta alla tjänster automagiskt

    Det är trevligt när ens tjänster startar automagiskt vid omboot och liknande. Lägg in följande rader i /etc/rc.conf:

    redis_enable="YES"
    postgresql_enable="YES"
    nginx_enable="YES"
    mastodon_stream_enable="YES"
    mastodon_web_enable="YES"
    mastodon_workers_enable="YES"

    Boota till sist om din server och se att allt kommer upp ordentligt. Kolla i loggarna för Nginx och Mastodon efter felmeddelanden från uppstarten. Ser allt rimligt bra ut kan du testa att surfa till din nya Mastodon-server, registrera ditt konto och se till att du blir administratör för servern innan du släpper på användare utifrån.

    Lycka till!