Przejdź do treści
WbudowaneSerwery i kontenery

Serwer Crunu w Docker Compose

Hostuj serwer Crunu na własnej maszynie przez Docker Compose: Caddy z automatycznym TLS albo Cloudflare Tunnel bez otwartych portów oraz SQLite lub Postgres.

Obsługa
Działa z Crunu już dziś: obsługa Docker jest częścią produktu.
Funkcje Crunu
Własny hosting i Zaszyfrowany sejf
Sprawdzono
Z wersją Crunu 6.0.0, 28 października 2026
Przykład. Kiteline to fikcyjna firma.

Funkcje Crunu, które działają z Docker

Każda z poniższych funkcji działa tak samo w każdej integracji: serwer przechowuje zaszyfrowane dane, a odszyfrować je mogą tylko osoby, maszyny i tokeny, którym dasz dostęp.

  • Własny hosting

    Uruchom ten sam serwer Crunu na własnym hoście z Dockerem, Cloudflare Workers, Vercel lub Google Cloud Run i przenoś go między nimi jednym archiwum.

    Dowiedz się więcej

  • Zaszyfrowany sejf

    Przechowuj pliki .env, dane dostępowe do chmury i klucze API w projektach i środowiskach, szyfrowane na twoich urządzeniach, zanim cokolwiek trafi na serwer.

    Dowiedz się więcej

Jak to działa z Docker

Na tej stronie

Co Crunu robi z Dockerem

Crunu działa w chmurze na app.crunu.com, więc większość zespołów nigdy nie wdraża serwera. Jeśli wolisz trzymać go na własnej maszynie, serwer ma gotową konfigurację Docker Compose: kontener serwera oraz Caddy, który sam wystawia certyfikat TLS dla twojej domeny.

Gdziekolwiek działa, serwer nie może odczytać wartości. Jego baza danych zawiera zaszyfrowane dane, klucze publiczne, podpisane dokumenty i metadane, a serwer nie ma żadnego klucza, który odszyfrowałby wartość. Porównanie opcji znajdziesz na stronie o własnym hostingu.

Wymagania

  • Maszyny z Dockerem i domeny z rekordem A lub AAAA, który na nią wskazuje.
  • Otwartych portów 80 i 443, żeby Caddy mógł uzyskać certyfikat.
  • Node.js 24 i plików serwera Crunu na tej maszynie. Poniższe polecenia uruchamia się z katalogu serwera.

Uruchomienie serwera

Adres serwera wybierz raz. Podpisy logowania, linki dostępu, klucze dostępu i zarejestrowane maszyny są z nim powiązane, a późniejsze przeniesienie na inną platformę zachowuje ten sam adres.

Shell
node scripts/server-init.mjs --origin https://vault.company.example --out deploy/docker/.env
docker compose -f deploy/docker/compose.yml up -d --build

server-init zapisuje plik .env z uprawnieniami 0600 i nowymi wartościami SERVER_KEY, BOOTSTRAP_TOKEN i CRON_SECRET. Od razu zapisz jego kopię w menedżerze haseł: bez niego serwera nie da się przywrócić. Domyślną bazą danych jest SQLite w woluminie Dockera. Dla Postgresa obok serwera uruchom server-init z --docker-postgres.

Następnie sprawdź wdrożenie i utwórz pierwszego właściciela kluczem startowym z .env:

Shell
node scripts/doctor.mjs https://vault.company.example

Cloudflare Tunnel zamiast otwartych portów

Serwer może też łączyć się z internetem przez Cloudflare Tunnel. Na maszynie nic nie jest publikowane, cloudflared łączy się bezpośrednio z serwerem, a TLS kończy Cloudflare. Umieść token tunelu w deploy/docker/.env, skieruj publiczną nazwę hosta tunelu na usługę server:8080 i dodaj plik tunelu do głównego pliku:

Shell
docker compose -f deploy/docker/compose.yml -f deploy/docker/compose.tunnel.yml up -d --build

Plik tunelu daje cloudflared stały adres we własnej sieci Dockera, a serwer ufa nagłówkowi z adresem klienta tylko z tego adresu, więc ograniczenia sieciowe widzą prawdziwy adres klienta.

Jak działa kontener

Konfiguracja Compose uruchamia serwer z głównym systemem plików tylko do odczytu, bez uprawnień (capabilities) Linuksa i jako użytkownik bez uprawnień, a ponowne uruchomienie na tej samej bazie danych jest przetestowane. Migracje schematu serwer stosuje sam przy starcie. Aktualizacja to to samo docker compose … up -d --build po pobraniu nowej wersji.

Obraz zawiera gotowego klienta webowego z dist/web/. Jeśli tego katalogu brakuje albo zawiera inną wersję niż serwer, kompilacja się zatrzymuje, zamiast samodzielnie budować niepodpisanego klienta webowego.

Kopie zapasowe i przenoszenie

crunu-server export zapisuje całą bazę danych do jednego archiwum bez jawnych wartości, a crunu-server import wczytuje je do pustej bazy na dowolnej obsługiwanej platformie: Docker, Cloudflare Workers, Vercel lub Google Cloud Run. Zachowaj ten sam .env i ten sam adres, a zmieni się tylko rekord DNS.

To archiwum przenosi serwer, który prowadzisz. Przejście z app.crunu.com na własny serwer nie jest jednym krokiem, bo do bazy danych w chmurze ma dostęp tylko operator. Wyeksportuj każde środowisko jako plik .env albo pobierz kopię offline, a potem dodaj pliki na swoim serwerze. Historia, ustawienia dostępu i dziennik audytu nie przechodzą w ten sposób.

Agent crunu w kontenerach

Skrypt instalacyjny agenta crunu ma tryb bez roota dla CI i kontenerów. Jest testowany w obrazach node:24, Ubuntu 24.04 i Alpine 3.22. W CI i innych krótkotrwałych kontenerach crunu działa z tokenem usługowym: loguje się i odszyfrowuje wewnątrz własnego procesu, bez plików stanu. Minimalny obraz bez ca-certificates nie może zweryfikować certyfikatu serwera, a crunu podpowiada, który pakiet zainstalować.

Usługa agenta w tle wymaga systemd i działa na hostach z Linuksem. Zobacz systemd.

Zobacz także

Odpowiedzi na pytania

Nie ma tu odpowiedzi? Napisz na support@crunu.com, a odpowie ci człowiek.

Skąd wziąć serwer?

Serwer nie jest publikowany do publicznego pobrania. Napisz na support@crunu.com.

Jakiej bazy danych używa?

Domyślnie SQLite w woluminie Dockera albo Postgresa obok serwera.

Czy da się uniknąć otwierania portów?

Tak. Uruchom serwer za Cloudflare Tunnel z plikiem Compose dla tunelu, a TLS zakończy Cloudflare.

Czy mogę przejść z app.crunu.com na własny serwer?

Nie w jednym kroku. Wyeksportuj każde środowisko jako plik .env albo pobierz kopię offline. Historia, ustawienia dostępu i dziennik audytu nie przechodzą w ten sposób.

Wypróbuj z Docker

Utwórz organizację na app.crunu.com, dodaj jedno środowisko i je podłącz. Bezpłatnie we wczesnym dostępie.