Att bygga en hemmserver kan låta komplicerat, men med rätt verktyg och några grundläggande Linux-kunskaper är det enklare än du tror. I denna guide visar vi hur du kan använda en äldre dator och en internetanslutning för att sätta upp en hemmserver som kör flera applikationer med hjälp av Docker. Med detta upplägg kan du enkelt hantera och skala dina tjänster, samtidigt som du får full kontroll över dina data och applikationer.
Låt oss ta en titt på hur du kommer igång med att skapa din egen Docker-server!
Varför Docker?
Docker gör det enkelt att köra och hantera flera applikationer isolerat i så kallade containrar. Med containrar kan du köra program oberoende av varandra utan att behöva oroa dig för konflikter mellan olika programvaruberoenden. Detta gör Docker till ett perfekt verktyg för att bygga och hantera en hemmserver.
Förutsättningar
För detta projekt behöver du:
- En äldre dator som kör Debian 12.
- En internetanslutning med en router som kan vidarebefordra portar.
- Grundläggande kunskaper i Linux och kommandoraden.
Vi utgår från att din server är ansluten till ditt hemnätverk via en router och att du kan komma åt den via SSH.
Förberedelser: Konfigurera din router och Dynamic DNS
För att din server ska vara tillgänglig utanför ditt hemnätverk behöver du koppla ett domännamn till din server. Problemet är att många internetleverantörer tilldelar dynamiska IP-adresser som ändras över tid. Lösningen på detta är Dynamic DNS.
Steg 1: Skaffa ett domännamn och konfigurera Dynamic DNS
Vi använder Namecheap för detta exempel:
- Logga in på Namecheap och gå till Domain List.
- Klicka på Manage och gå till Advanced DNS.
- Skapa en A + Dynamic DNS Record:
- Typ: A + Dynamic DNS
- Host:
@
- Värde:
127.0.0.1
- TTL: Automatic
- Aktivera Dynamic DNS och notera lösenordet.
Installera verktyget ddclient
på din server:
bashKopiera kodsudo apt update
sudo apt install ddclient
Redigera filen /etc/ddclient.conf
:
confKopiera kodprotocol=namecheap
use=web, web=dynamicdns.park-your-domain.com/getip
server=dynamicdns.park-your-domain.com
login=dittdomännamn.tld
password=dittlösenord
@
Starta om tjänsten:
bashKopiera kodsudo systemctl restart ddclient.service
Nu är din server redo att automatiskt uppdatera din externa IP-adress.
Installera Docker på din server
För att kunna köra applikationer i containrar behöver vi installera Docker. Gör så här:
bashKopiera kodsudo apt update
sudo apt install docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
Skapa en struktur för att organisera dina projekt:
bashKopiera kodmkdir ~/srv
cd ~/srv
Automatisera uppdateringar och installera Git
För att hålla ditt system säkert, installera Git och aktivera automatiska uppdateringar:
bashKopiera kodsudo apt install git
sudo apt install unattended-upgrades
Redigera inställningen för automatiska omstarter:
bashKopiera kodsudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Ändra raden till:
confKopiera kodUnattended-Upgrade::Automatic-Reboot "true";
Din första Docker-container: En enkel dashboard
Nu är vi redo att köra vår första applikation. Vi använder Esma, en enkel dashboard som visar dagens bild och väderprognos.
- Klona projektet från Git:
bashKopiera kodgit clone https://codeberg.org/dmpop/esma.git
cd esma
- Bygg och kör containern:
bashKopiera koddocker build -t esma .
sudo docker run -d --rm -p 8000:8000 --name=esma -v $PWD/data:/usr/src/esma/data esma
Öppna din webbläsare och navigera till http://dittdomännamn.tld:8000
.
Säkerställ tillgång med HTTPS och Caddy
För att göra din server säkrare och mer professionell kan vi använda Caddy som en omvänd proxy med HTTPS-stöd. Detta gör att dina applikationer blir tillgängliga över en säker anslutning.
Steg 1: Skapa en docker-compose.yml
-fil
Skapa filen i katalogen ~/srv
:
yamlKopiera kodservices:
caddy_proxy:
image: caddy:latest
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- caddy_net
esma:
build:
context: ./esma
volumes:
- ./esma/data:/usr/src/esma/data
networks:
- caddy_net
volumes:
caddy_data:
caddy_config:
networks:
caddy_net:
Steg 2: Skapa en Caddyfile
Skapa filen i samma katalog:
confKopiera kod{
email ditt@example.com
}
dittdomännamn.tld {
reverse_proxy esma:8000
}
Steg 3: Starta tjänsterna
Kör kommandot:
bashKopiera kodsudo docker compose up -d
Nu kan du besöka https://dittdomännamn.tld
och se din dashboard.
Lägg till fler tjänster med subdomäner
För att lägga till ytterligare applikationer, exempelvis CommaFeed för RSS-läsning, uppdatera docker-compose.yml
och Caddyfile
:
yamlKopiera kodcommafeed:
image: athou/commafeed:latest-h2
volumes:
- ./commafeed:/commafeed/data
networks:
- caddy_net
I Caddyfile
:
confKopiera kodcommafeed.dittdomännamn.tld {
reverse_proxy commafeed:8082
}
Automatisera uppstart med systemd
För att säkerställa att dina containrar startar automatiskt vid omstart kan du skapa en systemd-tjänst:
bashKopiera kodsudo nano /etc/systemd/system/home-server.service
Innehåll:
confKopiera kod[Unit]
Description=Hemmserver
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c "docker compose -f /home/USER/srv/docker-compose.yml up -d"
ExecStop=/bin/bash -c "docker compose -f /home/USER/srv/docker-compose.yml down"
[Install]
WantedBy=multi-user.target
Aktivera tjänsten:
bashKopiera kodsudo systemctl enable home-server.service
sudo systemctl start home-server.service
Nästa steg: Utöka och underhåll din server
När du har satt upp din server kan du överväga att använda verktyg som Portainer för att hantera dina containrar via en webbgränssnitt och Watchtower för att automatiskt uppdatera dina Docker-bilder. Det finns oändliga möjligheter när du väl kommit igång med självhosting!
Välkommen till den fascinerande världen av självhostade tjänster!