GuiderFiler, bilder och hemmetBokmärken med Linkwarden

Kör Linkwarden med Podman utan root

Linkwarden 2 på Debian 13, bokmärkeshanteraren med öppen källkod som behåller en kopia av varje sida du bokmärker, i rootless Podman under en egen användare bakom Caddy, med fulltextsökning.

Testad på Linkwarden 2.16.3 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 26 september 2026

Rekommenderad server för guiden

VC-S Micro · 2 vCPU · 8 GB Minne · 250 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

90 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

Linkwarden sparar dina bokmärken och behåller en egen kopia av varje sida: en skärmdump, en PDF, en läsvänlig textversion och en kopia av själva sidan i en enda fil. När en sida ändras eller försvinner finns din kopia kvar. Du sorterar länkar i samlingar, taggar dem, delar samlingar med andra och söker i texten på varje sida du har sparat.

Här körs den som en pod under en egen användare som heter linkwarden, bakom Caddy från Podman-guiden: Linkwarden själv, PostgreSQL för dess data och Meilisearch för dess sökning.

Varje steg nedan har körts på en server hos Melonslab med Debian 13:

  • Linkwarden 2.16.3 sparade en sida och gjorde inom en minut alla fyra kopiorna av den.
  • En sökning efter ett ord som bara fanns i sidans text hittade den.
  • När registreringen hade stängts gick det inte att skapa ett nytt konto.
  • Allt startade igen av sig självt efter en omstart av servern.

Podden använde omkring 500 MB minne, och en kort stund mer varje gång den sparade en sida, eftersom den öppnar sidan i en webbläsare.

Innan du börjar

Du behöver:

  • en server uppsatt som i Podman-guiden, med Caddy igång;
  • en A-post och en AAAA-post för links.example.com som pekar på din server.

Byt genomgående ut links.example.com mot ditt eget namn.

1. Skapa användaren

Som root:

useradd -m -s /bin/bash linkwarden
loginctl enable-linger linkwarden
machinectl shell linkwarden@

Allt fram till steg 4 körs som linkwarden.

2. Skapa hemligheterna

pw=$(openssl rand -hex 24)
printf %s "$pw" | podman secret create linkwarden-db-password -
printf 'postgresql://postgres:%s@127.0.0.1:5432/postgres' "$pw" | podman secret create linkwarden-database-url -
unset pw
openssl rand -hex 32 | tr -d '\n' | podman secret create linkwarden-nextauth-secret -
openssl rand -hex 32 | tr -d '\n' | podman secret create linkwarden-meili-key -

De två första innehåller databaslösenordet, en gång för PostgreSQL och en gång i adressen Linkwarden ansluter till. Den tredje signerar Linkwardens inloggningar, och den fjärde skyddar Meilisearch.

3. Definiera podden

mkdir -p ~/.config/containers/systemd
cd ~/.config/containers/systemd

Skapa linkwarden.pod:

[Pod]
PodName=linkwarden
# Only Caddy, on this server, can reach Linkwarden: the port is not open to the internet.
PublishPort=127.0.0.1:8096:3000

[Install]
WantedBy=default.target

Skapa linkwarden-db.container:

[Container]
ContainerName=linkwarden-db
Image=docker.io/library/postgres:16-alpine
Pod=linkwarden.pod
Volume=linkwarden-db:/var/lib/postgresql/data
Secret=linkwarden-db-password,type=env,target=POSTGRES_PASSWORD
AutoUpdate=registry

[Service]
Restart=always

Skapa linkwarden-search.container:

[Container]
ContainerName=linkwarden-search
Image=docker.io/getmeili/meilisearch:v1.13.3
Pod=linkwarden.pod
Volume=linkwarden-search:/meili_data
Environment=MEILI_ENV=production MEILI_NO_ANALYTICS=true
Secret=linkwarden-meili-key,type=env,target=MEILI_MASTER_KEY

[Service]
Restart=always

Och linkwarden-app.container:

[Unit]
After=linkwarden-db.service linkwarden-search.service

[Container]
ContainerName=linkwarden-app
Image=ghcr.io/linkwarden/linkwarden:latest
Pod=linkwarden.pod
Volume=linkwarden-data:/data/data
Environment=NEXTAUTH_URL=https://links.example.com/api/v1/auth MEILI_HOST=http://127.0.0.1:7700
Secret=linkwarden-database-url,type=env,target=DATABASE_URL
Secret=linkwarden-nextauth-secret,type=env,target=NEXTAUTH_SECRET
Secret=linkwarden-meili-key,type=env,target=MEILI_MASTER_KEY
AutoUpdate=registry

[Service]
Restart=always

De sparade kopiorna av dina sidor hamnar i volymen linkwarden-data. Meilisearch ligger kvar på den version som Linkwardens egen installation använder, eftersom en ny version av Meilisearch kräver att dess data migreras, medan Linkwarden och PostgreSQL uppdateras när nya versioner släpps. Linkwarden uppdaterar sin databas själv när den startar.

Starta den:

systemctl --user daemon-reload
systemctl --user start linkwarden-pod
systemctl --user enable --now podman-auto-update.timer

Vid första starten laddas avbilderna ner. De upptar omkring 2,2 GB på disken, och det tar ett par minuter.

4. Sätt Caddy framför

Gå tillbaka till root med exit, byt till Caddys användare med machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:

links.example.com {
    reverse_proxy 127.0.0.1:8096
}

Starta om Caddy med systemctl --user restart caddy.

5. Skapa ditt konto och stäng registreringen

Öppna https://links.example.com/register och skapa ditt konto med Display Name, Username och Password. Logga sedan in. Skapa på samma sätt konton åt alla andra som ska använda den.

Vem som helst som hittar adressen kan registrera sig tills du stänger registreringen. Som linkwarden lägger du till den här raden i linkwarden-app.container, under raden Environment=NEXTAUTH_URL:

Environment=NEXT_PUBLIC_DISABLE_REGISTRATION=true

Starta sedan om Linkwarden:

systemctl --user daemon-reload
systemctl --user restart linkwarden-app

Den som försöker registrera sig efter det får svaret Registration is disabled.

6. Spara länkar

Välj New Link, klistra in en adress och välj en samling och taggar om du vill. Inom en minut visar länken sin förhandsbild, och i dess meny finns skärmdumpen, PDF:en, den läsvänliga versionen och kopian av sidan. Sökningen högst upp letar i namn, adresser, taggar och texten på varje sparad sida.

Linkwarden har också tillägg för webbläsare och mobilappar, som loggar in med serverns adress, https://links.example.com, och ditt konto.

7. Säkerhetskopiera

Som linkwarden:

mkdir -p ~/backup
podman exec linkwarden-db pg_dump -U postgres postgres > ~/backup/linkwarden-db.sql
systemctl --user stop linkwarden-app linkwarden-search
podman volume export linkwarden-data --output ~/backup/linkwarden-data.tar
podman volume export linkwarden-search --output ~/backup/linkwarden-search.tar
systemctl --user start linkwarden-search linkwarden-app

Det sparar dina konton, länkar och samlingar, de sparade kopiorna av sidorna och sökindexet. Kopiera ~/backup till en annan maskin och förvara den säkert.

Felsökning

Länkarna får aldrig någon förhandsbild eller kopior. Linkwardens worker gör dem och loggar varje länk den arbetar med: podman logs linkwarden-app | grep worker visar vad som hände.

Det går fortfarande att registrera sig efter steg 5. Raden NEXT_PUBLIC_DISABLE_REGISTRATION saknas, eller så startades Linkwarden inte om efter daemon-reload.

Kör det på din egen server

VC-S Micro

90 kr/mån

vCPU
2
Minne
8 GB
Lagring
250 GB
Trafik
10 TB
Standard
HDD · RAID 10
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider