Eigen server
Draai je eigen 2Secret-server.
Een kleine Docker-container op een Raspberry Pi, NAS, Proxmox of VPS is alles wat je nodig hebt. Je apparaten synchroniseren erdoor, je kunt kluizen delen, hij levert de webkluis, en hij bewaart je kluizen alleen versleuteld.
Voordat je begint
Wat je nodig hebt.
-
Een kleine machine
Een Raspberry Pi, een NAS, een Proxmox-container of een kleine VPS is ruim genoeg voor een gezin of team. De image draait op amd64 en arm64.
-
Docker
Docker met de Compose-plugin. Eén los programma met systemd kan ook.
-
Een domeinnaam
Iets als kluis.voorbeeld.nl, zodat je apps de server via HTTPS kunnen bereiken.
-
Een kwartiertje
Het grootste deel is wachten tot Docker de image heeft gedownload.
Voor wie het technisch wil weten
De server ziet nooit je hoofdwachtwoord, je geheime sleutel of de inhoud van je kluis in leesbare vorm. Behandel hem toch zoals elke dienst op internet: houd hem bijgewerkt, maak back-ups en gebruik HTTPS.
Aanbevolen
Docker Compose met Caddy en automatische HTTPS.
Caddy staat vóór de 2Secret-server en regelt automatisch een gratis HTTPS-certificaat voor je domein. In de map deploy van de repository staan kant-en-klare voorbeeldbestanden.
-
Laat je domein naar de machine wijzen
Maak een DNS-record (A of AAAA) voor je domein dat naar het publieke IP-adres van de machine wijst, en zorg dat poort 80 en 443 de machine bereiken.
-
Haal de voorbeeldbestanden op
git clone --depth 1 https://github.com/joostiphone/2Secret.git cd 2Secret/deploy -
Vul je domein en uitnodigingscode in
Open het bestand
Caddyfileen vervangvault.example.comdoor je eigen domein. Vervang indocker-compose.ymlde voorbeeldwaarde vanTWOSECRET_INVITE_CODESdoor een eigen, lange uitnodigingscode: aanmelden kan vanaf het begin alleen op uitnodiging. De andere instellingen staan in het overzicht van instellingen. -
Start de server
docker compose up -d docker compose logs -fZodra de logs laten zien dat Caddy een certificaat heeft, open je je domein in een browser: je ziet dan de webkluis van 2Secret.
-
Maak je account aan
Maak je account aan in de app of de webkluis, met je serveradres en de uitnodigingscode. Geef de code alleen aan mensen die je op je server wilt hebben; heeft iedereen een account, dan kun je de aanmeldingen sluiten.
Alleen Docker
Heb je al een reverse proxy?
Draai de container los en laat je bestaande proxy (nginx, Traefik, Nginx Proxy Manager, …) ernaar wijzen. Zet er altijd HTTPS voor.
Haal de image op
docker pull ghcr.io/joostiphone/2secret:latest
Start hem met een blijvend datavolume
docker run -d --name 2secret --restart unless-stopped \
-p 127.0.0.1:8743:8743 \
-v 2secret-data:/data \
-e TWOSECRET_SIGNUPS=invite \
-e TWOSECRET_INVITE_CODES=choose-a-long-secret-code \
ghcr.io/joostiphone/2secret:latest
De poort luistert alleen op localhost; je proxy stuurt HTTPS-verkeer door. Zonder TWOSECRET_SIGNUPS kan iedereen die de server bereikt een account aanmaken.
Andere manieren
Kies de opzet die bij je hardware past.
-
Programma met systemd
Elke release bevat
2secret-servervoor Linux (x86_64-unknown-linux-gnu), en de webkluis als apart archief. Download ze via de downloadpagina, controleer de SHA-256-controlesommen en draai de server als gebruiker zonder extra rechten onder systemd. In de mapdeployvan de repository staat een kant-en-klaar unit-bestand,2secret-server.service; de technische documentatie loopt het met je door. -
Proxmox LXC
Maak een kleine unprivileged Debian-container aan en zet nesting en keyctl aan, die Docker nodig heeft. Installeer daarin Docker en volg de stappen voor Docker Compose.
pct set <ID> --features nesting=1,keyctl=1 -
Raspberry Pi
De image is ook voor arm64 gebouwd. Gebruik een 64-bits Raspberry Pi OS (bijvoorbeeld op een Pi 4 of 5), installeer Docker en volg de stappen voor Docker Compose.
curl -fsSL https://get.docker.com | shZet het datavolume liever op een SSD dan op een SD-kaart, en maak er back-ups van.
-
Synology- of QNAP-NAS
Installeer Container Manager (Synology) of Container Station (QNAP). Maak een project van het voorbeeldbestand
docker-compose.yml, maar laat de dienstcaddyweg en publiceer in plaats daarvan poort 8743 van de dienst2secret. Koppel het datavolume aan een gedeelde map die in je NAS-back-ups zit, en gebruik de reverse proxy van de NAS of een Cloudflare Tunnel voor HTTPS. -
Achter een Cloudflare Tunnel
Geen open poorten op je router:
cloudflaredmaakt een uitgaande verbinding met Cloudflare, en Cloudflare levert je domein via HTTPS.- Maak in Cloudflare Zero Trust een tunnel aan en installeer
cloudflaredop de machine met de opdracht die je te zien krijgt. - Voeg een publieke hostnaam toe (bijvoorbeeld
kluis.voorbeeld.nl) met als servicehttp://localhost:8743. - Caddy is niet nodig: Cloudflare regelt HTTPS. Start de container zoals bij Alleen Docker.
De apps versleutelen je kluizen nog steeds end-to-end. Cloudflare ontsleutelt wel de HTTPS-verbinding en kan dus e-mailadressen, inlogverzoeken en andere metadata zien, maar nooit de inhoud van je kluizen.
- Maak in Cloudflare Zero Trust een tunnel aan en installeer
Aanmelden op uitnodiging
Jouw server, jouw gastenlijst.
Met TWOSECRET_SIGNUPS=invite kunnen nieuwe mensen alleen een account aanmaken met een van de codes uit TWOSECRET_INVITE_CODES (gescheiden door komma’s). Geef een code dus alleen aan je gezin of je team. Heeft iedereen een account, zet dan TWOSECRET_SIGNUPS=closed. De standaardwaarde is open, dus stel altijd een van de twee in. Alle instellingen staan in het overzicht van instellingen.
Instellingen
Elke instelling, uitgelegd.
De server stel je in met omgevingsvariabelen of opdrachtregelopties, zoals TWOSECRET_BIND, TWOSECRET_DATA_DIR, TWOSECRET_WEB_DIR, TWOSECRET_SIGNUPS, TWOSECRET_INVITE_CODES, TWOSECRET_SESSION_DAYS en TWOSECRET_CORS_ORIGINS. De technische documentatie heeft de volledige, actuele tabel met standaardwaarden.
Onderhoud
Back-ups, updates en gezondheid.
-
Maak back-ups van het datavolume
Alles wat de server bewaart, staat in zijn datavolume, in de SQLite-database
2secret.db. De kluizen daarin zijn versleuteld, maar een back-up beschermt je toch tegen een kapotte schijf. Stop de server terwijl je hem kopieert:docker compose stop 2secret docker run --rm -v deploy_2secret-data:/data:ro -v "$PWD":/backup debian:trixie-slim \ tar czf /backup/2secret-backup-$(date +%F).tar.gz -C /data . docker compose start 2secretdeploy_2secret-datais het volume dat Compose in de mapdeployaanmaakt;docker volume lstoont de precieze naam. Behandel back-ups als gevoelig en bewaar minstens één kopie op een andere machine. Je apparaten hebben bovendien een volledige versleutelde kopie van de kluizen die ze gebruiken. -
Bijwerken
Lees eerst de wijzigingen, maak een back-up, en dan:
docker compose pull docker compose up -dDatabasemigraties draaien automatisch.
-
Controleer of alles goed gaat
docker compose ps docker compose logs --tail=50 curl https://kluis.voorbeeld.nl/api/v1/healthHet health-check-adres
/api/v1/healthantwoordt met{"status":"ok","version":"…","signups_open":…}, handig voor monitoringtools.
Verbinden
Verbind je apps, extensie en CLI.
-
Apps
Vul bij het aanmaken van een account (met Synchroniseren met een 2Secret-server aan) of bij het inloggen het adres van je server in, bijvoorbeeld
https://kluis.voorbeeld.nl. Een lokale kluis koppel je later via Instellingen → Verbinden met server. -
Browserextensie
Log in op de extensie met hetzelfde serveradres, e-mailadres, hoofdwachtwoord en dezelfde geheime sleutel.
-
CLI
Log één keer in met
2secret account signin --server https://kluis.voorbeeld.nl --email [email protected]; zie de handleiding voor de CLI.