36 lines
1.2 KiB
Bash
Executable file
36 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# setup.sh — run once on the server to create user, directory, service, nginx, and SSL
|
|
set -e
|
|
|
|
echo "Creating writeonce user..."
|
|
sudo useradd -r -s /bin/false writeonce 2>/dev/null || echo "User already exists"
|
|
|
|
echo "Creating directory structure..."
|
|
sudo mkdir -p /opt/writeonce/{content,data,templates,static}
|
|
sudo chown -R writeonce:writeonce /opt/writeonce
|
|
|
|
echo "Installing systemd service..."
|
|
sudo cp writeonce.service /etc/systemd/system/
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable writeonce
|
|
|
|
echo "Configuring nginx..."
|
|
sudo cp writeonce.de.nginx /etc/nginx/sites-available/writeonce.de
|
|
sudo ln -sf /etc/nginx/sites-available/writeonce.de /etc/nginx/sites-enabled/
|
|
sudo nginx -t
|
|
sudo systemctl reload nginx
|
|
|
|
echo "Setting up SSL with Let's Encrypt..."
|
|
sudo apt install -y certbot python3-certbot-nginx
|
|
sudo certbot --nginx -d writeonce.de -d www.writeonce.de
|
|
|
|
echo "Installing certbot reload hook..."
|
|
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
|
|
sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh > /dev/null << 'HOOK'
|
|
#!/bin/bash
|
|
systemctl reload nginx
|
|
HOOK
|
|
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
|
|
|
|
echo "Setup complete."
|
|
echo "Run deploy.sh from your development machine to deploy the binary."
|