201 lines
5.2 KiB
Markdown
201 lines
5.2 KiB
Markdown
# 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](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)
|
|
|
|
- [Docker](https://docs.docker.com/get-docker/) ≥ 24
|
|
- [Docker Compose](https://docs.docker.com/compose/) v2
|
|
|
|
### För lokal utveckling
|
|
|
|
- [Go](https://go.dev/dl/) ≥ 1.22
|
|
- [Node.js](https://nodejs.org/) ≥ 20 + npm
|
|
- [Git](https://git-scm.com/) (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):**
|
|
|
|
```bash
|
|
docker login ditt-registry.example.com
|
|
```
|
|
|
|
**2. Skapa en `docker-compose.yml`:**
|
|
|
|
```yaml
|
|
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:
|
|
>
|
|
> ```yaml
|
|
> 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`:**
|
|
|
|
```env
|
|
# 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:**
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
docker compose -f docker/docker-compose.yml up -d --build
|
|
```
|
|
|
|
---
|
|
|
|
## Lokal utveckling
|
|
|
|
### Backend
|
|
|
|
```bash
|
|
cd backend
|
|
go run ./cmd/server
|
|
# Servern lyssnar på :4000
|
|
# config.json i backend/ används som konfiguration
|
|
```
|
|
|
|
### Frontend
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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 |
|
|
|
|
---
|
|
|
|
## Dokumentformat
|
|
|
|
Alla dokument skrivs i [AsciiDoc](https://asciidoc.org/). Exempeldokument:
|
|
|
|
```asciidoc
|
|
= 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):
|
|
|
|
```bash
|
|
docker buildx build \
|
|
--platform linux/amd64,linux/arm64 \
|
|
-t ditt-registry/archivum:latest \
|
|
-f docker/Dockerfile --push .
|
|
```
|
|
|