Bjorn Blomberg 0fa8f951ae
All checks were successful
build-and-push / build (push) Successful in 1m54s
ci: rebuild trigger 3 (transient TLS-timeout mot docker.io i run #8)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 22:56:21 +02:00

Archivum

Archivum är ett självhostat wiki- och dokumenthanteringssystem. Det är tänkt att användas för allt från enkla anteckningar och teknisk dokumentation till världsbyggande inför rollspelskampanjer. Alla dokument lagras som AsciiDoc-filer (.adoc) på disk, vilket innebär att du kan läsa och redigera dem direkt med valfritt predikat — utan att öppna webbgränssnittet. Applikationen renderar dokumenten till HTML i webbläsaren och hanterar automatisk versionshantering via Git, så att varje sparning skapar ett commit och alla ändringar kan rullas tillbaka.

Se ARCHITECTURE.md för detaljerad dokumentation om arkitektur, exekveringsflöden och komponentstruktur.


Användningsområden

  • Anteckningar — snabbanteckningar och personliga kunskapsbaser
  • Wiki — team-wiki med dokumentträd och historik
  • Teknisk dokumentation — API-dokumentation, systembeskrivningar, runbooks
  • Rollspelskampanjer — världsbyggande, NPC-register, kartor och händelseloggar

Krav

För att köra med Docker (rekommenderat)

För lokal utveckling

  • Go ≥ 1.22
  • Node.js ≥ 20 + npm
  • Git (används av backenden för versionshantering)

Snabbstart med Docker Compose

Alternativ A — Hämta image från privat registry (rekommenderat)

Det enklaste sättet att köra Archivum är att hämta en färdigbyggd image från ett privat registry, utan att behöva källkoden.

1. Logga in mot ditt registry (om det kräver autentisering):

docker login ditt-registry.example.com

2. Skapa en docker-compose.yml:

services:
  archivum:
    image: ditt-registry.example.com/archivum:latest
    container_name: archivum
    restart: unless-stopped
    ports:
      - "${HOST_PORT:-8080}:4000"
    environment:
      DOCKER_PATH: /config
      UI_DIR: /srv/archivum/ui
      PUID: ${PUID:-1000}
      PGID: ${PGID:-1000}
      TZ: ${TZ:-Europe/Stockholm}
    volumes:
      - ${DOCKER_PATH:-./local}/config:/config
      - ${DOCKER_PATH:-./local}/data:/data
    networks:
      - archivum-net

networks:
  archivum-net:
    driver: bridge

Om du kör en reverse proxy (t.ex. Nginx Proxy Manager eller Traefik) i en separat compose-stack kan du låta dem dela nätverk istället för att exponera porten direkt. Deklarera då det externa nätverket:

networks:
  proxy-net:
    external: true

Och byt ut archivum-net mot proxy-net i service-definitionen. Ta även bort ports-sektionen om proxyn hanterar all trafik.

3. Skapa en .env-fil i samma katalog som docker-compose.yml:

# Sökväg på hosten där config/ och data/ skapas
DOCKER_PATH=/opt/archivum

# Port som exponeras på hosten
HOST_PORT=8080

# Kör containern som denna användare/grupp (kör `id` för att se dina värden)
PUID=1000
PGID=1000

# Tidszon
TZ=Europe/Stockholm

4. Starta:

docker compose up -d

5. Öppna http://localhost:8080 i webbläsaren. Installationsguiden startar automatiskt vid första körningen.


Alternativ B — Bygg imagen lokalt från källkod

Klona repot och använd den medföljande compose-filen som också bygger imagen:

docker compose -f docker/docker-compose.yml up -d --build

Lokal utveckling

Backend

cd backend
go run ./cmd/server
# Servern lyssnar på :4000
# config.json i backend/ används som konfiguration

Frontend

cd frontend
npm install
npm run dev
# Dev-server på :5173 med proxy till :4000

Öppna http://localhost:5173. API-anrop proxyas automatiskt till backend-servern.

Bygga frontend för produktion

cd frontend
npm run build
# Utdata i frontend/dist/

Konfiguration

Konfigurationen lagras i config.json. Filen skapas automatiskt av installationsguiden.

Fält Beskrivning
storage_path Sökväg till katalogen där .adoc-filer och Git-repot lagras
db_path Sökväg till SQLite-databasen (användarkonton)
jwt_secret Hemlig nyckel för session-tokens
listen_addr TCP-adress att lyssna på, t.ex. :4000
ldap Valfri LDAP-konfiguration för företagsinloggning

Autentisering & behörigheter

Archivum stöder tre inloggningssätt:

  • SSO via Authentik (OIDC) — rekommenderat. Användare loggar in genom Authentik (som i sin tur autentiserar mot LDAP). Grupp-medlemskap avgör roll och åtkomst. Se docs/AUTHENTIK_SETUP.md.
  • Lokala konton — skapas i setup-guiden och i admin-panelen (bcrypt).
  • Publik användare — anonym, väljs på login-sidan; ser bara det admin delat.

Roller: medlemmar i gruppen Archivum-admin är administratörer (ser/gör allt, administrerar sidan). Alla andra styrs av åtkomstreglerna.

Åtkomstmodell: per sökväg (dokument eller mapp) tilldelar admin allow/deny till användare och grupper. Standard är deny; en allow ger tillgång, en deny vinner alltid. Reglerna kombineras över användarens alla grupper och överliggande mappar. Hanteras under Admin Settings → Access Control.

Automatiskt bygge (Gitea Actions)

Vid push till main bygger den självhostade Gitea-runnern (arm64, på Pi5) imagen och pushar den till registryn:

localhost:5000/archivum:latest
localhost:5000/archivum:<commit-sha>

Workflow: .gitea/workflows/build.yaml. Deploya sedan localhost:5000/archivum:latest från din compose-stack på Pi5.

Dokumentformat

Alla dokument skrivs i AsciiDoc. Exempeldokument:

= Mitt dokument
:author: Anna Andersson
:date: 2026-04-12

== Introduktion

Det här är ett *fetstilt* stycke med en https://example.com[länk].

== Kodexempel

[source,go]
----
fmt.Println("Hello, Archivum!")
----

Filen sparas som mitt-dokument.adoc i storage_path och versionshanteras automatiskt.


Docker: Multi-arch build

För att bygga och pusha en image som stöder både AMD64 och ARM64 (Raspberry Pi):

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t ditt-registry/archivum:latest \
  -f docker/Dockerfile --push .
Description
Wiki with Git and direkt file as the truth
Readme Apache-2.0 1 MiB
Languages
Vue 51.1%
Go 39.2%
TypeScript 7.2%
CSS 1.1%
Dockerfile 0.8%
Other 0.6%