littleshop/DEPLOYMENT.md
SysAdmin e1b377a042 Initial commit of LittleShop project (excluding large archives)
- BTCPay Server integration
- TeleBot Telegram bot
- Review system
- Admin area
- Docker deployment configuration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 15:07:38 +01:00

4.8 KiB

LittleShop Deployment Guide

Portainer Deployment to portainer-01 (10.0.0.51)

This guide covers deploying LittleShop to your Portainer infrastructure with Traefik routing.

Prerequisites

  1. Portainer running on portainer-01 (10.0.0.51)

    • Username: sysadmin
    • Password: Phenom12#.
  2. Traefik running on portainer-03 with:

    • External network named traefik
    • Let's Encrypt SSL certificate resolver named letsencrypt
    • Entry point named websecure (port 443)
  3. DNS Configuration

    • littleshop.silverlabs.uk should point to your Traefik instance

Deployment Steps

Step 1: Access Portainer

  1. Navigate to http://10.0.0.51:9000 (or your Portainer URL)
  2. Login with sysadmin / Phenom12#.

Step 2: Create Environment Variables

  1. Go to StacksAdd stack
  2. Name: littleshop
  3. In the environment variables section, add:
    JWT_SECRET_KEY=YourSuperSecretKeyThatIsAtLeast32CharactersLong!
    BTCPAY_SERVER_URL=https://your-btcpay-server.com
    BTCPAY_STORE_ID=your-store-id
    BTCPAY_API_KEY=your-api-key
    BTCPAY_WEBHOOK_SECRET=your-webhook-secret
    

Step 3: Deploy the Stack

  1. Copy the contents of docker-compose.yml into the web editor
  2. Click Deploy the stack

Step 4: Verify Deployment

  1. Check that the container is running in Containers view
  2. Visit https://littleshop.silverlabs.uk to confirm the application is accessible

Configuration Details

Traefik Labels Configuration

The docker-compose includes these Traefik labels:

  • Host Rule: littleshop.silverlabs.uk
  • HTTPS: Enabled with Let's Encrypt
  • Port: Internal port 8080
  • Headers: Proper forwarding headers for ASP.NET Core

Persistent Storage

Three volumes are created:

  • littleshop_data: SQLite database and application data
  • littleshop_uploads: Product images and file uploads
  • littleshop_logs: Application log files

Security Configuration

  • Application runs on internal port 8080
  • HTTPS enforced through Traefik
  • JWT secrets configurable via environment variables
  • Forwarded headers properly configured for reverse proxy

Environment Variables

Variable Description Required Default
JWT_SECRET_KEY Secret key for JWT token signing Yes Default provided
BTCPAY_SERVER_URL BTCPay Server URL No Empty
BTCPAY_STORE_ID BTCPay Store ID No Empty
BTCPAY_API_KEY BTCPay API Key No Empty
BTCPAY_WEBHOOK_SECRET BTCPay Webhook Secret No Empty

Initial Setup

Default Admin Account

On first run, the application creates a default admin account:

  • Username: admin
  • Password: admin
  • ⚠️ IMPORTANT: Change this password immediately after deployment!

Post-Deployment Steps

  1. Visit https://littleshop.silverlabs.uk/Admin
  2. Login with admin / admin
  3. Change the admin password
  4. Configure categories and products
  5. Set up BTCPay Server integration if needed

Troubleshooting

Container Won't Start

  • Check environment variables are set correctly
  • Verify Traefik network exists: docker network ls
  • Check container logs in Portainer

SSL Certificate Issues

  • Ensure DNS points to Traefik instance
  • Check Traefik logs for Let's Encrypt errors
  • Verify letsencrypt resolver is configured

Application Errors

  • Check application logs in /app/logs/ volume
  • Verify database permissions in /app/data/ volume
  • Ensure file upload directory is writable

Database Issues

  • Database is automatically created on first run
  • Data persists in littleshop_data volume
  • Location: /app/data/littleshop.db

Updating the Application

  1. In Portainer, go to Stackslittleshop
  2. Click Editor
  3. Update the image tag or configuration as needed
  4. Click Update the stack

Backup and Restore

Backup

# Backup volumes
docker run --rm -v littleshop_littleshop_data:/data -v $(pwd):/backup alpine tar czf /backup/littleshop-data-backup.tar.gz -C /data .
docker run --rm -v littleshop_littleshop_uploads:/data -v $(pwd):/backup alpine tar czf /backup/littleshop-uploads-backup.tar.gz -C /data .

Restore

# Restore volumes
docker run --rm -v littleshop_littleshop_data:/data -v $(pwd):/backup alpine tar xzf /backup/littleshop-data-backup.tar.gz -C /data
docker run --rm -v littleshop_littleshop_uploads:/data -v $(pwd):/backup alpine tar xzf /backup/littleshop-uploads-backup.tar.gz -C /data

Support

For issues or questions:

  1. Check application logs in Portainer
  2. Verify Traefik configuration
  3. Ensure all environment variables are set correctly
  4. Check network connectivity between containers

Deployment Status: Ready for Production
Hostname: https://littleshop.silverlabs.uk
Admin Panel: https://littleshop.silverlabs.uk/Admin