Files
Charon/GHCR_MIGRATION_SUMMARY.md

263 lines
7.0 KiB
Markdown

# GitHub Container Registry & Pages Setup Summary
## ✅ Changes Completed
Updated all workflows and documentation to use GitHub Container Registry (GHCR) instead of Docker Hub, and configured documentation to publish to GitHub Pages (not wiki).
---
## 🐳 Docker Registry Changes
### What Changed:
- **Before**: Docker Hub (`docker.io/wikid82/caddy-proxy-manager-plus`)
- **After**: GitHub Container Registry (`ghcr.io/wikid82/caddyproxymanagerplus`)
### Benefits of GHCR:
**No extra accounts needed** - Uses your GitHub account
**Automatic authentication** - Uses built-in `CPMP_TOKEN`
**Free for public repos** - No Docker Hub rate limits
**Integrated with repo** - Packages show up on your GitHub profile
**Better security** - No need to store Docker Hub credentials
### Files Updated:
#### 1. `.github/workflows/docker-build.yml`
- Changed registry from `docker.io` to `ghcr.io`
- Updated image name to use `${{ github.repository }}` (automatically resolves to `wikid82/caddyproxymanagerplus`)
- Changed login action to use GitHub Container Registry with `CPMP_TOKEN`
- Updated all image references throughout workflow
- Updated summary outputs to show GHCR URLs
**Key Changes:**
```yaml
# Before
env:
REGISTRY: docker.io
IMAGE_NAME: wikid82/caddy-proxy-manager-plus
# After
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
```
```yaml
# Before
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# After
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.CPMP_TOKEN }}
```
#### 2. `docs/github-setup.md`
- Removed entire Docker Hub setup section
- Added GHCR explanation (no setup needed!)
- Updated instructions for making packages public
- Changed all docker pull commands to use `ghcr.io`
- Updated troubleshooting for GHCR-specific issues
- Added workflow permissions instructions
**Key Sections Updated:**
- Step 1: Now explains GHCR is automatic (no secrets needed)
- Troubleshooting: GHCR-specific error handling
- Quick Reference: All commands use `ghcr.io/wikid82/caddyproxymanagerplus`
- Checklist: Removed Docker Hub items, added workflow permissions
#### 3. `README.md`
- Updated Docker quick start command to use GHCR
- Changed from `wikid82/caddy-proxy-manager-plus` to `ghcr.io/wikid82/caddyproxymanagerplus`
#### 4. `docs/getting-started.md`
- Updated Docker run command to use GHCR image path
---
## 📚 Documentation Publishing
### GitHub Pages (Not Wiki)
**Why Pages instead of Wiki:**
-**Automated deployment** - Deploys automatically via GitHub Actions
-**Beautiful styling** - Custom HTML with dark theme
-**Version controlled** - Changes tracked in git
-**Search engine friendly** - Better SEO than wikis
-**Custom domain support** - Can use your own domain
-**Modern features** - Supports custom styling, JavaScript, etc.
**Wiki limitations:**
- ❌ No automated deployment from Actions
- ❌ Limited styling options
- ❌ Separate from main repository
- ❌ Less professional appearance
### Workflow Configuration
The `docs.yml` workflow already configured for GitHub Pages:
- Converts markdown to HTML
- Creates beautiful landing page
- Deploys to Pages on every docs change
- No wiki integration needed or wanted
---
## 🚀 How to Use
### For Users (Pulling Images):
**Latest stable version:**
```bash
docker pull ghcr.io/wikid82/cpmp:latest
docker run -d -p 8080:8080 -v caddy_data:/app/data ghcr.io/wikid82/cpmp:latest
```
**Development version:**
```bash
docker pull ghcr.io/wikid82/cpmp:dev
```
**Specific version:**
```bash
docker pull ghcr.io/wikid82/caddyproxymanagerplus:1.0.0
```
### For Maintainers (Setup):
#### 1. Enable Workflow Permissions
Required for pushing to GHCR:
1. Go to **Settings****Actions****General**
2. Scroll to **Workflow permissions**
3. Select **"Read and write permissions"**
4. Click **Save**
#### 2. Enable GitHub Pages
Required for docs deployment:
1. Go to **Settings****Pages**
2. Under **Build and deployment**:
- Source: **"GitHub Actions"**
3. That's it!
#### 3. Make Package Public (Optional)
After first build, to allow public pulls:
1. Go to repository
2. Click **Packages** (right sidebar)
3. Click your package name
4. Click **Package settings**
5. Scroll to **Danger Zone**
6. **Change visibility****Public**
---
## 🎯 What Happens Now
### On Push to `development`:
1. ✅ Builds Docker image
2. ✅ Tags as `dev`
3. ✅ Pushes to `ghcr.io/wikid82/caddyproxymanagerplus:dev`
4. ✅ Tests the image
5. ✅ Shows summary with pull command
### On Push to `main`:
1. ✅ Builds Docker image
2. ✅ Tags as `latest`
3. ✅ Pushes to `ghcr.io/wikid82/caddyproxymanagerplus:latest`
4. ✅ Tests the image
5. ✅ Converts docs to HTML
6. ✅ Deploys to `https://wikid82.github.io/CaddyProxyManagerPlus/`
### On Version Tag (e.g., `v1.0.0`):
1. ✅ Builds Docker image
2. ✅ Tags as `1.0.0`, `1.0`, `1`, and `sha-abc1234`
3. ✅ Pushes all tags to GHCR
4. ✅ Tests the image
---
## 🔍 Verifying It Works
### Check Docker Build:
1. Push any change to `development`
2. Go to **Actions** tab
3. Watch "Build and Push Docker Images" run
4. Check **Packages** section on GitHub
5. Should see package with `dev` tag
### Check Docs Deployment:
1. Push any change to docs
2. Go to **Actions** tab
3. Watch "Deploy Documentation to GitHub Pages" run
4. Visit `https://wikid82.github.io/CaddyProxyManagerPlus/`
5. Should see your docs with dark theme!
---
## 📦 Image Locations
All images are now at:
```
ghcr.io/wikid82/caddyproxymanagerplus:latest
ghcr.io/wikid82/caddyproxymanagerplus:dev
ghcr.io/wikid82/caddyproxymanagerplus:1.0.0
ghcr.io/wikid82/caddyproxymanagerplus:1.0
ghcr.io/wikid82/caddyproxymanagerplus:1
ghcr.io/wikid82/caddyproxymanagerplus:sha-abc1234
```
View on GitHub:
```
https://github.com/Wikid82/CaddyProxyManagerPlus/pkgs/container/caddyproxymanagerplus
```
---
## 🎉 Benefits Summary
### No More:
- ❌ Docker Hub account needed
- ❌ Manual secret management
- ❌ Docker Hub rate limits
- ❌ Separate image registry
- ❌ Complex authentication
### Now You Have:
- ✅ Automatic authentication
- ✅ Unlimited pulls (for public packages)
- ✅ Images linked to repository
- ✅ Free hosting
- ✅ Better integration with GitHub
- ✅ Beautiful documentation site
- ✅ Automated everything!
---
## 📝 Files Modified
1. `.github/workflows/docker-build.yml` - Complete GHCR migration
2. `docs/github-setup.md` - Updated for GHCR and Pages
3. `README.md` - Updated docker commands
4. `docs/getting-started.md` - Updated docker commands
---
## ✅ Ready to Deploy!
Everything is configured and ready. Just:
1. Set workflow permissions (Settings → Actions → General)
2. Enable Pages (Settings → Pages → Source: GitHub Actions)
3. Push to `development` to test
4. Push to `main` to go live!
Your images will be at `ghcr.io/wikid82/caddyproxymanagerplus` and docs at `https://wikid82.github.io/CaddyProxyManagerPlus/`! 🚀