Installation & distribution
Denna guide täcker distributionsalternativ för självhostade Onetime Secret-instanser.
Distributionsalternativ
Section titled “Distributionsalternativ”Docker-distribution
Section titled “Docker-distribution”Docker tillhandahåller den mest tillförlitliga och portabla distributionsmetoden.
Använda Docker Compose
Section titled “Använda Docker Compose”För komplett infrastrukturhantering, använd det dedikerade Docker Compose-repositoriet:
Repository: https://github.com/onetimesecret/docker-compose/
Snabb installation:
git clone https://github.com/onetimesecret/docker-compose.gitcd docker-composedocker-compose up -dManuell Docker Compose-installation:
version: '3.8'
services: onetime: image: onetimesecret/onetimesecret:latest ports: - "3000:3000" environment: - REDIS_URL=redis://redis:6379/0 - SECRET=${SECRET} - HOST=${HOST:-localhost:3000} - SSL=${SSL:-false} - RACK_ENV=production depends_on: - redis volumes: - ./etc:/app/etc - ./logs:/app/logs
redis: image: redis:bookworm volumes: - redis_data:/data command: redis-server --requirepass ${REDIS_PASSWORD}
volumes: redis_data:Miljöfil (.env):
SECRET=your-secure-32-character-hex-keyREDIS_PASSWORD=your-redis-passwordHOST=your-domain.comSSL=trueManuell installation
Section titled “Manuell installation”För miljöer som kräver anpassade konfigurationer eller befintlig infrastruktur.
Installera beroenden
Section titled “Installera beroenden”Ubuntu 22.04 LTS:
# Uppdatera systemsudo apt update && sudo apt upgrade -y
# Installera Ruby och byggverktygsudo apt install -y ruby ruby-dev build-essential gitsudo gem install bundler
# Installera Redissudo apt install -y redis-serversudo systemctl enable redis-serversudo systemctl start redis-server
# Installera Node.js (för utveckling och byggande av frontend-tillgångar)curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -sudo apt install -y nodejssudo npm install -g pnpm@latestCentOS/RHEL 8:
# Aktivera PowerTools/CodeReady-repositorysudo dnf install -y dnf-plugins-coresudo dnf config-manager --set-enabled powertools
# Installera Ruby och utvecklingsverktygsudo dnf groupinstall -y "Development Tools"sudo dnf install -y ruby ruby-devel gitsudo gem install bundler
# Installera Redissudo dnf install -y redissudo systemctl enable redissudo systemctl start redisApplikationsinställning
Section titled “Applikationsinställning”# Skapa applikationsanvändaresudo useradd -r -m -s /bin/bash onetime
# Växla till applikationsanvändaresudo su - onetime
# Klona repositorygit clone https://github.com/onetimesecret/onetimesecret.gitcd onetimesecret
# Installera beroendenbundle install --deployment --without development test
# Kopiera och konfigurera miljöcp .env.example .envcp ./etc/config.example.yaml ./etc/config.yaml
# Skapa commit hash för versionsspårninggit rev-parse --short HEAD > .commit_hash.txtKonfiguration av omvänd proxy
Section titled “Konfiguration av omvänd proxy”Dessa konfigurationsexempel kan hjälpa dig komma igång, men du bör justera dem för att passa dina specifika behov.
Grundläggande konfiguration:
server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri;}
server { listen 443 ssl http2; server_name your-domain.com;
# SSL-konfiguration ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
# Säkerhetshuvuden add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options DENY always; add_header X-Content-Type-Options nosniff always;
# Statiska filer från byggd frontend location /dist/ { root /app/public; expires 1y; add_header Cache-Control "public, immutable"; try_files $uri $uri/ =404; }
# API-förfrågningar till backend location /api/ { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
# Alla andra förfrågningar till backend location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket-stöd proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }}Aktivera webbplatsen:
sudo ln -s /etc/nginx/sites-available/onetime /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginxCaddy tillhandahåller automatisk HTTPS och enklare konfiguration:
your-domain.com { # Hantera statiska filer från byggd frontend handle /dist/* { root * /app/public file_server }
# API-förfrågningar till backend handle /api/* { reverse_proxy 127.0.0.1:3000 }
# Alla andra förfrågningar till backend (för server-renderade sidor) handle { reverse_proxy 127.0.0.1:3000 }}Apache
Section titled “Apache”<VirtualHost *:80> ServerName your-domain.com Redirect permanent / https://your-domain.com/</VirtualHost>
<VirtualHost *:443> ServerName your-domain.com
# SSL-konfiguration SSLEngine on SSLCertificateFile /path/to/your/cert.pem SSLCertificateKeyFile /path/to/your/key.pem
# Säkerhetshuvuden Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff
# Statiska filer från byggd frontend Alias /dist /app/public/dist <Directory /app/public/dist> Require all granted ExpiresActive On ExpiresDefault "access plus 1 year" </Directory>
# API och app-förfrågningar till backend ProxyPreserveHost On ProxyPass /dist ! ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/</VirtualHost>SSL/TLS-konfiguration
Section titled “SSL/TLS-konfiguration”Let’s Encrypt (Certbot)
Section titled “Let’s Encrypt (Certbot)”Installera Certbot:
# Ubuntu/Debiansudo apt install certbot python3-certbot-nginx
# CentOS/RHELsudo dnf install certbot python3-certbot-nginxGenerera certifikat:
# För Nginxsudo certbot --nginx -d your-domain.com
# För Apachesudo certbot --apache -d your-domain.com
# Manuellt certifikat (om du använder anpassad proxykonfiguration)sudo certbot certonly --webroot -w /var/www/html -d your-domain.comAutomatisk förnyelse:
# Lägg till i crontabecho "0 12 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontabAnpassade SSL-certifikat
Section titled “Anpassade SSL-certifikat”Placera dina certifikat och uppdatera sökvägar i proxykonfiguration:
# Certifikatfiler/etc/ssl/certs/your-domain.com.crt/etc/ssl/private/your-domain.com.key
# Ställ in korrekta behörighetersudo chmod 600 /etc/ssl/private/your-domain.com.keysudo chmod 644 /etc/ssl/certs/your-domain.com.crtRedis-konfiguration
Section titled “Redis-konfiguration”Alternativ 1: Endast minne (aldrig spara till disk för maximal säkerhet):
# Minnesoptimeringmaxmemory 1gbmaxmemory-policy allkeys-lru
# Säkerhet - hemligheter skrivs aldrig till disksave "" # Inaktivera alla automatiska sparningarappendonly no # Inaktivera AOF-loggning
# Säkerhetrequirepass your_redis_passwordbind 127.0.0.1
# Prestandatcp-keepalive 60timeout 300Alternativ 2: Diskpersistens (möjliggör säkerhetskopior men skriver hemligheter till disk):
# Minnesoptimeringmaxmemory 1gbmaxmemory-policy allkeys-lru
# RDB-ögonblicksbilder - skapar dump.rdb-filersave 900 1 # Spara om minst 1 nyckel ändrades på 900 sekundersave 300 10 # Spara om minst 10 nycklar ändrades på 300 sekundersave 60 10000 # Spara om minst 10000 nycklar ändrades på 60 sekunder
# AOF-loggning - skapar appendonly.aof-filer för point-in-time-återställningappendonly yesappendfsync everysec # Synka till disk varje sekund
# Säkerhetrequirepass your_redis_passwordbind 127.0.0.1
# Prestandatcp-keepalive 60timeout 300Viktigt: Med diskpersistens aktiverad kommer hemligheter att skrivas till:
dump.rdb-filer (ögonblicksbilder vid intervaller)appendonly.aof-filer (kontinuerlig append-logg)
Välj baserat på dina säkerhets- kontra säkerhetskopieringskrav.
Starta om Redis:
sudo systemctl restart redisRedis-säkerhetskopior
Section titled “Redis-säkerhetskopior”Redis:
#!/bin/bash# Redis säkerhetskopieringsskriptBACKUP_DIR="/var/backups/onetime"DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Skapa säkerhetskopiaredis-cli -a "$REDIS_PASSWORD" --rdb $BACKUP_DIR/redis_$DATE.rdb
# Rensa gamla säkerhetskopiorfind $BACKUP_DIR -name "redis_*.rdb" -mtime +7 -deleteNästa steg
Section titled “Nästa steg”Efter framgångsrik distribution:
- Konfigurera din instans med anpassade inställningar
- Konfigurera övervakning och varningar för produktionsoperationer
- Granska säkerhetsinställningar och aktivera ytterligare skydd
- Konfigurera automatisering av säkerhetskopior och testa återställningsförfaranden
- Konfigurera anpassade domäner för din organisation
Din Onetime Secret-instans är nu redo för produktionsanvändning!