# Pokedex Online A landing page for the Pokedex Online project, containerized and ready for deployment. ## πŸš€ Local Development ### Quick Start ```bash # Open index.html directly in browser open index.html ``` ## 🐳 Docker Deployment ### Build and Run Locally ```bash # Build the image docker build -t pokedex-online . # Run the container docker run -d -p 8080:80 --name pokedex-online pokedex-online # View in browser open http://localhost:8080 ``` ### Using Docker Compose ```bash # Start the service docker-compose up -d # Stop the service docker-compose down # View logs docker-compose logs -f ``` ## πŸ“¦ Portainer Deployment ### Option 1: Stack Deployment (Recommended) 1. Log into Portainer 2. Navigate to **Stacks** β†’ **Add stack** 3. Name: `pokedex-online` 4. Upload or paste the `docker-compose.yml` contents 5. Click **Deploy the stack** ### Option 2: Container Deployment 1. Build the image locally: ```bash docker build -t pokedex-online:latest . ``` 2. Tag for your registry (if using): ```bash docker tag pokedex-online:latest your-registry/pokedex-online:latest docker push your-registry/pokedex-online:latest ``` 3. In Portainer: - Navigate to **Containers** β†’ **Add container** - Name: `pokedex-online` - Image: `pokedex-online:latest` (or your registry path) - Port mapping: `8080:80` - Restart policy: `unless-stopped` - Deploy ### Option 3: Git Repository (Portainer with BuildKit) 1. In Portainer, navigate to **Stacks** β†’ **Add stack** 2. Choose **Repository** 3. Repository URL: Your git repository URL 4. Compose path: `code/websites/pokedex.online/docker-compose.yml` 5. Deploy ## 🌐 Access After deployment, access the site at: - Local: http://localhost:8080 - Server: http://your-server-ip:8080 ## οΏ½ Automated Deployment to Synology ### Prerequisites 1. **SSH Configuration**: Ensure SSH keys are configured for Synology NAS: - Host: `synology_internal` (10.0.0.81:2323) or `synology_external` (home.gregrjacobs.com:2323) - User: `GregRJacobs` - Key: `~/.ssh/ds3627xs_gregrjacobs` 2. **Remote Path**: Deployment target is `/volume1/docker/pokedex-online/base` on Synology ### Deployment Commands ```bash # Deploy to internal Synology (10.0.0.81) on default port 8080 npm run deploy:pokedex # Deploy to internal with custom port npm run deploy:pokedex -- --port 8081 # Deploy to external Synology (home.gregrjacobs.com) npm run deploy:pokedex:external # Deploy to external with custom port npm run deploy:pokedex:external -- --port 3000 # Full custom deployment npm run deploy:pokedex -- --target internal --port 8082 ``` ### Deployment Process The deployment script automatically: 1. **Connects** to Synology via SSH using configured host 2. **Captures** existing container state for rollback capability 3. **Transfers** files (index.html, Dockerfile, docker-compose.yml) via SFTP 4. **Modifies** docker-compose.yml port mapping based on `--port` argument 5. **Builds** and starts the Docker container with `docker-compose up -d --build` 6. **Health checks** the deployed container (5 retries with 3s intervals) 7. **Rolls back** to previous image on failure, or cleans up if no previous deployment existed ### Health Check After deployment, the script verifies the container is responding by making HTTP requests to: - Internal: `http://10.0.0.81:` - External: `http://home.gregrjacobs.com:` If health check fails after 5 attempts, the deployment is rolled back automatically. ### Rollback Behavior - **Existing container**: Rolls back to previous Docker image - **New deployment**: Runs `docker-compose down --volumes --remove-orphans` to clean up ### CLI Options | Option | Values | Default | Description | |--------|--------|---------|-------------| | `--target` | `internal`, `external` | `internal` | SSH host to deploy to | | `--port` | `1-65535` | `8080` | HTTP port to expose on host | ### Examples ```bash # Production deployment to external Synology on port 80 npm run deploy:pokedex -- --target external --port 80 # Development deployment to internal Synology on port 8080 npm run deploy:pokedex:internal # Test deployment on high port npm run deploy:pokedex -- --port 9000 ``` ## πŸ”§ Configuration ### Change Port Edit `docker-compose.yml`: ```yaml ports: - "3000:80" # Change 3000 to your desired port ``` Or use the `--port` argument during automated deployment. ### Custom Domain If using a reverse proxy (nginx, Traefik, Caddy): ```yaml labels: - "traefik.enable=true" - "traefik.http.routers.pokedex.rule=Host(`pokedex.yourdomain.com`)" ``` ## πŸ“ Project Structure ``` pokedex.online/ β”œβ”€β”€ index.html # Landing page β”œβ”€β”€ Dockerfile # Container configuration β”œβ”€β”€ docker-compose.yml # Compose configuration └── README.md # This file ``` ## πŸ› οΈ Future Development This is currently a landing page. Future plans: - Interactive PokΓ©dex with search - Team builder - Type effectiveness calculator - Collection tracker - Integration with PokΓ©mon APIs ## πŸ“ Notes - Uses nginx:alpine for minimal footprint (~23MB) - Restart policy set to `unless-stopped` - Watchtower compatible for auto-updates - No environment variables needed for basic setup --- **Status**: In Development **Last Updated**: January 2026