ice/docs/deployment-quickstart.md
Claude Code c395183158 Sync all deployment documentation and remove manual database creation
- Align deploy.sh, deployment.md, and deployment-quickstart.md with consistent steps
- Remove manual database file creation (SQLite creates them automatically)
- Update all documents to use npm run build instead of npm run build:ts
- Add architecture support for both ARM64 and x86_64
- Include S3_BUCKET_NAME=none option for local-only deployment
- Fix step numbering after removing database creation step

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 18:37:48 -04:00

3 KiB

Great Lakes Ice Report - Quick Deployment Guide

This is a simplified deployment guide for quickly setting up the Great Lakes Ice Report application.

Prerequisites

  • Debian 12 (ARM64 or x86_64) server
  • Root or sudo access
  • Domain pointing to your server (optional, defaults to ice.puremichigan.lol)

Quick Start - Automated Deployment

# Run the automated deployment script
curl -sSL https://ice-puremichigan-lol.s3.amazonaws.com/scripts/deploy.sh | bash

# Or to use local files only (no S3)
curl -sSL https://ice-puremichigan-lol.s3.amazonaws.com/scripts/deploy.sh | S3_BUCKET_NAME=none bash

Then follow the instructions printed by the script. The key steps are:

Manual Steps After Running Deployment Script

1. Clone the Repository

git clone https://git.deco.sh/deco/ice.git /opt/icewatch

2. Copy Configuration Files (if using S3_BUCKET_NAME=none)

sudo cp /opt/icewatch/scripts/icewatch.service /etc/systemd/system/
sudo cp /opt/icewatch/scripts/Caddyfile /etc/caddy/Caddyfile

3. Set Up the Application

cd /opt/icewatch
npm install
npm run build  # Compile TypeScript and build CSS
cp .env.example .env
nano .env  # Add your MapBox token and admin password

4. Configure Domain (if needed)

sudo nano /etc/caddy/Caddyfile
# Change 'ice.puremichigan.lol' to your domain

5. Set Permissions

sudo chown -R icewatch:icewatch /opt/icewatch
sudo chmod 660 /opt/icewatch/.env

6. Start Services

sudo systemctl daemon-reload
sudo systemctl enable icewatch caddy
sudo systemctl start icewatch caddy

7. Check Status

sudo systemctl status icewatch
sudo systemctl status caddy

Environment Variables

Edit .env with these required settings:

MAPBOX_ACCESS_TOKEN=pk.your_mapbox_token_here
ADMIN_PASSWORD=your_secure_password
PORT=3000
NODE_ENV=production

Verify Installation

# Test locally
curl http://localhost:3000/api/locations

# Check logs if needed
sudo journalctl -u icewatch -f

Updating the Application

cd /opt/icewatch
sudo systemctl stop icewatch

# Pull latest changes as icewatch user
sudo -u icewatch git pull

# Install dependencies and rebuild
sudo -u icewatch npm install
sudo -u icewatch npm run build

# Restart service
sudo systemctl start icewatch

Troubleshooting

Service won't start

# Check logs
sudo journalctl -u icewatch --no-pager -n 50

# Common issue: Missing dist/server.js
cd /opt/icewatch
npm run build

# Database files are created automatically by the application

Permission errors

# Ensure correct ownership of project directory
cd /opt/icewatch
sudo chown -R icewatch:icewatch /opt/icewatch

Important Notes

  1. The deployment script installs Node.js, Go, and builds a custom Caddy with rate limiting
  2. The application uses TypeScript which must be compiled with npm run build
  3. Database files are created automatically by the application
  4. The service runs as the icewatch system user
  5. Caddy automatically obtains SSL certificates