diff --git a/.gitea/workflows/deploy-nas.yml b/.gitea/workflows/deploy-nas.yml new file mode 100644 index 0000000..9a4efd2 --- /dev/null +++ b/.gitea/workflows/deploy-nas.yml @@ -0,0 +1,55 @@ +name: Deploy to NAS + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: false + load: true + tags: kekbot:latest + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Save Docker image + run: docker save kekbot:latest -o kekbot.tar + + - name: Install SSH dependencies + run: | + sudo apt-get update + sudo apt-get install -y sshpass + + - name: Deploy to NAS + env: + SSH_PASSWORD: ${{ secrets.NAS_SSH_PASSWORD }} + run: | + # Create app directory on NAS + sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no hllywluis@luis-nas.lan "mkdir -p /mnt/kCloud/Home/hllywluis/kekbot" + + # Copy Docker files + sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no docker-compose.yml Dockerfile .env hllywluis@luis-nas.lan:/mnt/kCloud/Home/hllywluis/kekbot/ + sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no kekbot.tar hllywluis@luis-nas.lan:/mnt/kCloud/Home/hllywluis/kekbot/ + + # Load Docker image and deploy + sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no hllywluis@luis-nas.lan << 'EOF' + cd /mnt/kCloud/Home/hllywluis/kekbot + docker load -i kekbot.tar + docker-compose down || true + docker-compose up -d + EOF \ No newline at end of file diff --git a/GITEA-DEPLOY.md b/GITEA-DEPLOY.md new file mode 100644 index 0000000..36c5364 --- /dev/null +++ b/GITEA-DEPLOY.md @@ -0,0 +1,79 @@ +# Gitea Workflow Deployment to NAS + +This guide explains how to set up the Gitea workflow to deploy Kekbot to your NAS via SSH. + +## Prerequisites + +1. **Docker and Docker Compose** must be installed on your NAS +2. **SSH access** enabled on your NAS with password authentication + +## Setup Instructions + +### 1. Add SSH Password Secret to Gitea + +1. Go to your Gitea repository +2. Navigate to **Settings** → **Secrets** (or **Actions** → **Secrets**) +3. Add a new secret named `NAS_SSH_PASSWORD` +4. Set the value to your NAS user password (hllywluis) + +### 2. Verify NAS Configuration + +Ensure your NAS has: + +- Docker installed +- Docker Compose installed +- SSH server running on port 22 +- Password authentication enabled for SSH + +### 3. Test SSH Access (Optional) + +Before running the workflow, you can test SSH access: + +```bash +ssh hllywluis@luis-nas.lan +``` + +## Workflow Configuration + +The workflow file is located at [`.gitea/workflows/deploy-nas.yml`](.gitea/workflows/deploy-nas.yml) + +### How It Works + +1. **Build**: Builds the Docker image locally using Docker Buildx +2. **Save**: Saves the Docker image as a tar archive +3. **Transfer**: Uses `sshpass` to SSH into your NAS and copy files +4. **Deploy**: Loads the Docker image and runs `docker-compose up -d` + +### Manual Trigger + +You can manually trigger the deployment by: + +1. Going to your Gitea repository +2. Navigating to **Actions** +3. Selecting the **Deploy to NAS** workflow +4. Clicking **Run workflow** + +## Troubleshooting + +### SSH Connection Failed + +If the workflow fails with SSH connection issues: + +- Verify `NAS_SSH_PASSWORD` secret is set correctly +- Check that the NAS is reachable at `luis-nas.lan` +- Ensure SSH password authentication is enabled on the NAS + +### Docker Errors + +If Docker fails on the NAS: + +- Verify Docker is running: `docker ps` +- Check Docker Compose: `docker-compose --version` +- Review logs: `docker-compose logs` + +### Permission Issues + +The workflow uses the `hllywluis` user. If you need a different user: + +1. Update the `hllywluis@luis-nas.lan` in the workflow file +2. Adjust the `/mnt/kCloud/Home/hllywluis/kekbot` directory permissions accordingly