Initialize APT repository
Source: feature/debian-packaging@a9366d069d Date: 2025-11-23 21:24:50 UTC
This commit is contained in:
commit
5dbab9062c
423
APT_REPO_SUMMARY.md
Normal file
423
APT_REPO_SUMMARY.md
Normal file
@ -0,0 +1,423 @@
|
|||||||
|
# APT Repository Setup Summary
|
||||||
|
|
||||||
|
## 🎉 What You Now Have
|
||||||
|
|
||||||
|
You now have a complete system for creating and hosting your own APT repository for socktop packages, **without needing a sponsor or official Debian/Ubuntu approval**.
|
||||||
|
|
||||||
|
## 📁 Files Created
|
||||||
|
|
||||||
|
### Scripts (in `scripts/`)
|
||||||
|
- **`init-apt-repo.sh`** - Initializes the APT repository directory structure
|
||||||
|
- **`add-package-to-repo.sh`** - Adds .deb packages to the repository and generates metadata
|
||||||
|
- **`sign-apt-repo.sh`** - Signs the repository with your GPG key
|
||||||
|
- **`setup-apt-repo.sh`** - All-in-one interactive wizard to set everything up
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
- **`QUICK_START_APT_REPO.md`** - Quick start guide (< 10 minutes)
|
||||||
|
- **`docs/APT_REPOSITORY.md`** - Comprehensive 600+ line guide covering everything
|
||||||
|
- **`APT_REPO_SUMMARY.md`** - This file
|
||||||
|
|
||||||
|
### GitHub Actions
|
||||||
|
- **`.github/workflows/publish-apt-repo.yml`** - Automated building, signing, and publishing
|
||||||
|
|
||||||
|
## 🚀 Quick Start (Choose One)
|
||||||
|
|
||||||
|
### Option 1: Interactive Setup (Recommended for First Time)
|
||||||
|
|
||||||
|
Run the setup wizard:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/setup-apt-repo.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
This walks you through:
|
||||||
|
1. ✅ Checking prerequisites
|
||||||
|
2. 🔑 Setting up GPG key
|
||||||
|
3. 📦 Finding/building packages
|
||||||
|
4. 📝 Creating repository structure
|
||||||
|
5. ✍️ Signing the repository
|
||||||
|
6. 📋 Next steps to publish to gh-pages
|
||||||
|
|
||||||
|
### Option 2: Manual Step-by-Step
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Initialize
|
||||||
|
./scripts/init-apt-repo.sh
|
||||||
|
|
||||||
|
# 2. Build packages
|
||||||
|
cargo deb --package socktop
|
||||||
|
cargo deb --package socktop_agent
|
||||||
|
|
||||||
|
# 3. Add packages
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop_*.deb
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb
|
||||||
|
|
||||||
|
# 4. Sign (replace YOUR-KEY-ID)
|
||||||
|
./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID
|
||||||
|
|
||||||
|
# 5. Update URLs
|
||||||
|
sed -i 's/YOUR-USERNAME/your-github-username/g' apt-repo/*.{md,html}
|
||||||
|
|
||||||
|
# 6. Publish to gh-pages (see below)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option 3: Fully Automated (After Initial Setup)
|
||||||
|
|
||||||
|
Once gh-pages branch exists, just tag releases:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git tag v1.50.0
|
||||||
|
git push --tags
|
||||||
|
|
||||||
|
# GitHub Actions will:
|
||||||
|
# - Build packages for AMD64 and ARM64
|
||||||
|
# - Update APT repository
|
||||||
|
# - Sign with your GPG key
|
||||||
|
# - Push to gh-pages branch automatically
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📤 Publishing to GitHub Pages (gh-pages branch)
|
||||||
|
|
||||||
|
**Why gh-pages branch?**
|
||||||
|
- ✅ Keeps main branch clean (source code only)
|
||||||
|
- ✅ Separate branch for published content
|
||||||
|
- ✅ GitHub Actions can auto-update it
|
||||||
|
- ✅ You can customize the landing page
|
||||||
|
|
||||||
|
**Initial Setup:**
|
||||||
|
```bash
|
||||||
|
# Create gh-pages branch
|
||||||
|
git checkout --orphan gh-pages
|
||||||
|
git rm -rf .
|
||||||
|
|
||||||
|
# Copy apt-repo CONTENTS to root (not the folder!)
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
rm -rf apt-repo
|
||||||
|
|
||||||
|
# Commit and push
|
||||||
|
git add .
|
||||||
|
git commit -m "Initialize APT repository"
|
||||||
|
git push -u origin gh-pages
|
||||||
|
|
||||||
|
# Return to main
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
**Enable in GitHub:**
|
||||||
|
1. Settings → Pages
|
||||||
|
2. Source: **gh-pages** → **/ (root)**
|
||||||
|
3. Save
|
||||||
|
|
||||||
|
Your repo will be at: `https://your-username.github.io/socktop/`
|
||||||
|
|
||||||
|
**Note:** GitHub Pages only allows `/` (root) or `/docs`. Since we use gh-pages branch, contents go in the root of that branch.
|
||||||
|
|
||||||
|
See `SETUP_GITHUB_PAGES.md` for detailed step-by-step instructions.
|
||||||
|
|
||||||
|
### Alternative: Self-Hosted Server
|
||||||
|
|
||||||
|
Copy `apt-repo/` contents to your web server:
|
||||||
|
```bash
|
||||||
|
rsync -avz apt-repo/ user@example.com:/var/www/apt/
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure Apache/Nginx to serve the directory. See `docs/APT_REPOSITORY.md` for details.
|
||||||
|
|
||||||
|
## 🤖 GitHub Actions Automation
|
||||||
|
|
||||||
|
### Required Secrets
|
||||||
|
|
||||||
|
Add these in GitHub Settings → Secrets → Actions:
|
||||||
|
|
||||||
|
1. **GPG_PRIVATE_KEY**
|
||||||
|
```bash
|
||||||
|
gpg --armor --export-secret-key YOUR-KEY-ID
|
||||||
|
# Copy entire output including BEGIN/END lines
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **GPG_KEY_ID**
|
||||||
|
```bash
|
||||||
|
gpg --list-secret-keys --keyid-format LONG
|
||||||
|
# Use the ID after "rsa4096/"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **GPG_PASSPHRASE**
|
||||||
|
```bash
|
||||||
|
# Your GPG passphrase (leave empty if no passphrase)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Triggers
|
||||||
|
|
||||||
|
The workflow runs on:
|
||||||
|
- **Version tags**: `git tag v1.50.0 && git push --tags`
|
||||||
|
- **Manual dispatch**: Actions tab → "Publish APT Repository" → Run workflow
|
||||||
|
|
||||||
|
### What It Does
|
||||||
|
|
||||||
|
1. ✅ Builds packages for AMD64 and ARM64
|
||||||
|
2. ✅ Initializes or updates APT repository
|
||||||
|
3. ✅ Generates Packages files and metadata
|
||||||
|
4. ✅ Signs with your GPG key
|
||||||
|
5. ✅ Commits and pushes to gh-pages branch
|
||||||
|
6. ✅ Creates GitHub Release with artifacts
|
||||||
|
7. ✅ Generates summary with installation instructions
|
||||||
|
|
||||||
|
## 👥 User Installation
|
||||||
|
|
||||||
|
Once published, users install with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Add repository
|
||||||
|
curl -fsSL https://your-username.github.io/socktop/KEY.gpg | \
|
||||||
|
sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
|
||||||
|
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://your-username.github.io/socktop stable main" | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/socktop.list
|
||||||
|
|
||||||
|
# Install
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install socktop socktop-agent
|
||||||
|
|
||||||
|
# The agent service is automatically installed and configured
|
||||||
|
sudo systemctl enable --now socktop-agent
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Maintenance
|
||||||
|
|
||||||
|
### Release New Version (Automated)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Update version in Cargo.toml, commit changes
|
||||||
|
git add . && git commit -m "Bump version to 1.51.0"
|
||||||
|
git tag v1.51.0
|
||||||
|
git push origin main --tags
|
||||||
|
|
||||||
|
# GitHub Actions automatically:
|
||||||
|
# - Builds packages for AMD64 and ARM64
|
||||||
|
# - Updates apt-repo
|
||||||
|
# - Signs with GPG
|
||||||
|
# - Pushes to gh-pages branch
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Update (if needed)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# On main branch
|
||||||
|
cargo deb --package socktop
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop_*.deb
|
||||||
|
./scripts/sign-apt-repo.sh
|
||||||
|
|
||||||
|
# Switch to gh-pages and update
|
||||||
|
git checkout gh-pages
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
git add . && git commit -m "Release v1.51.0" && git push
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Remove Old Versions
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# On gh-pages branch
|
||||||
|
git checkout gh-pages
|
||||||
|
rm pool/main/socktop_1.50.0_*.deb
|
||||||
|
# Regenerate metadata (re-add remaining packages)
|
||||||
|
git add . && git commit -m "Remove old versions" && git push
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 Key Benefits
|
||||||
|
|
||||||
|
✅ **No sponsor needed** - Host your own repository
|
||||||
|
✅ **Full control** - You decide when to release
|
||||||
|
✅ **Free hosting** - GitHub Pages at no cost
|
||||||
|
✅ **Automated** - GitHub Actions does the work
|
||||||
|
✅ **Professional** - Just like official repos
|
||||||
|
✅ **Multi-arch** - AMD64, ARM64 support built-in
|
||||||
|
✅ **Secure** - GPG signed packages
|
||||||
|
✅ **Easy updates** - Users get updates via `apt upgrade`
|
||||||
|
|
||||||
|
## 📊 Repository Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
apt-repo/
|
||||||
|
├── dists/
|
||||||
|
│ └── stable/
|
||||||
|
│ ├── Release # Main metadata (checksums)
|
||||||
|
│ ├── Release.gpg # Detached signature
|
||||||
|
│ ├── InRelease # Clearsigned release
|
||||||
|
│ └── main/
|
||||||
|
│ ├── binary-amd64/
|
||||||
|
│ │ ├── Packages # Package list
|
||||||
|
│ │ ├── Packages.gz # Compressed
|
||||||
|
│ │ └── Release # Component metadata
|
||||||
|
│ ├── binary-arm64/
|
||||||
|
│ └── binary-armhf/
|
||||||
|
├── pool/
|
||||||
|
│ └── main/
|
||||||
|
│ ├── socktop_1.50.0_amd64.deb
|
||||||
|
│ ├── socktop-agent_1.50.1_amd64.deb
|
||||||
|
│ ├── socktop_1.50.0_arm64.deb
|
||||||
|
│ └── socktop-agent_1.50.1_arm64.deb
|
||||||
|
├── KEY.gpg # Public GPG key
|
||||||
|
├── README.md # Repository info
|
||||||
|
├── index.html # Web interface
|
||||||
|
└── packages.html # Package listing
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔑 GPG Key Management
|
||||||
|
|
||||||
|
### Create New Key
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg --full-generate-key
|
||||||
|
# Choose RSA 4096, no expiration (or 2 years)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Export Keys
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Public key (for users)
|
||||||
|
gpg --armor --export YOUR-KEY-ID > KEY.gpg
|
||||||
|
|
||||||
|
# Private key (for GitHub Secrets)
|
||||||
|
gpg --armor --export-secret-key YOUR-KEY-ID
|
||||||
|
```
|
||||||
|
|
||||||
|
### Backup Keys
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Backup to safe location
|
||||||
|
gpg --export-secret-keys YOUR-KEY-ID > gpg-private-backup.key
|
||||||
|
gpg --export YOUR-KEY-ID > gpg-public-backup.key
|
||||||
|
```
|
||||||
|
|
||||||
|
### Key Rotation
|
||||||
|
|
||||||
|
If your key expires or is compromised:
|
||||||
|
```bash
|
||||||
|
./scripts/sign-apt-repo.sh apt-repo stable NEW-KEY-ID
|
||||||
|
gpg --armor --export NEW-KEY-ID > apt-repo/KEY.gpg
|
||||||
|
# Users need to re-import the key
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
|
### "Repository not signed"
|
||||||
|
```bash
|
||||||
|
./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID
|
||||||
|
ls apt-repo/dists/stable/Release* # Should show 3 files
|
||||||
|
```
|
||||||
|
|
||||||
|
### "Package not found"
|
||||||
|
```bash
|
||||||
|
cd apt-repo
|
||||||
|
dpkg-scanpackages --arch amd64 pool/main /dev/null > dists/stable/main/binary-amd64/Packages
|
||||||
|
gzip -9 -k -f dists/stable/main/binary-amd64/Packages
|
||||||
|
cd ..
|
||||||
|
./scripts/sign-apt-repo.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### "404 Not Found" on GitHub Pages
|
||||||
|
- Wait 2-3 minutes after pushing
|
||||||
|
- Check Settings → Pages is enabled
|
||||||
|
- Verify source branch/directory
|
||||||
|
|
||||||
|
### GitHub Actions not signing
|
||||||
|
- Check all 3 secrets are set correctly
|
||||||
|
- GPG_PRIVATE_KEY must include BEGIN/END lines
|
||||||
|
- Test signing locally first
|
||||||
|
|
||||||
|
## 📚 Documentation
|
||||||
|
|
||||||
|
| File | Purpose | Length |
|
||||||
|
|------|---------|--------|
|
||||||
|
| `QUICK_START_APT_REPO.md` | Get started in < 10 minutes | Quick |
|
||||||
|
| `SETUP_GITHUB_PAGES.md` | Detailed gh-pages setup guide | Step-by-step |
|
||||||
|
| `docs/APT_REPOSITORY.md` | Complete guide with all options | Comprehensive |
|
||||||
|
| `docs/DEBIAN_PACKAGING.md` | How .deb packages are built | Technical |
|
||||||
|
| `DEBIAN_PACKAGING_SUMMARY.md` | Overview of packaging work | Summary |
|
||||||
|
| `APT_REPO_SUMMARY.md` | This file | Overview |
|
||||||
|
|
||||||
|
## 🎓 Learning Path
|
||||||
|
|
||||||
|
1. **Start here**: `QUICK_START_APT_REPO.md` (10 min)
|
||||||
|
2. **Set up**: Run `./scripts/setup-apt-repo.sh` (15 min)
|
||||||
|
3. **Publish**: Follow `SETUP_GITHUB_PAGES.md` (5 min)
|
||||||
|
4. **Automate**: Set up GitHub Actions secrets (10 min)
|
||||||
|
5. **Advanced**: Read `docs/APT_REPOSITORY.md` as needed
|
||||||
|
|
||||||
|
## 🚦 Next Steps
|
||||||
|
|
||||||
|
Choose your path:
|
||||||
|
|
||||||
|
### Just Getting Started?
|
||||||
|
1. ✅ Read `QUICK_START_APT_REPO.md`
|
||||||
|
2. ✅ Run `./scripts/setup-apt-repo.sh`
|
||||||
|
3. ✅ Follow `SETUP_GITHUB_PAGES.md` to publish
|
||||||
|
4. ✅ Test installation on a VM
|
||||||
|
|
||||||
|
### Want Automation?
|
||||||
|
1. ✅ Generate/export GPG key
|
||||||
|
2. ✅ Add GitHub Secrets
|
||||||
|
3. ✅ Tag a release: `git tag v1.50.0 && git push --tags`
|
||||||
|
4. ✅ Watch GitHub Actions magic happen
|
||||||
|
|
||||||
|
### Want to Understand Everything?
|
||||||
|
1. ✅ Read `docs/APT_REPOSITORY.md` (comprehensive)
|
||||||
|
2. ✅ Study the scripts in `scripts/`
|
||||||
|
3. ✅ Examine `.github/workflows/publish-apt-repo.yml`
|
||||||
|
4. ✅ Learn about Debian repository format
|
||||||
|
|
||||||
|
### Ready for Production?
|
||||||
|
1. ✅ Set up monitoring/analytics
|
||||||
|
2. ✅ Create PPA for Ubuntu (Launchpad)
|
||||||
|
3. ✅ Apply to Debian mentors for official inclusion
|
||||||
|
4. ✅ Set up repository mirrors
|
||||||
|
5. ✅ Document best practices for users
|
||||||
|
|
||||||
|
## 🌟 Success Criteria
|
||||||
|
|
||||||
|
You'll know you're successful when:
|
||||||
|
|
||||||
|
- [ ] Users can `apt install socktop`
|
||||||
|
- [ ] Updates work with `apt upgrade`
|
||||||
|
- [ ] Multiple architectures supported
|
||||||
|
- [ ] Repository is GPG signed
|
||||||
|
- [ ] GitHub Actions publishes automatically
|
||||||
|
- [ ] Installation instructions in README
|
||||||
|
- [ ] Zero sponsor or approval needed
|
||||||
|
|
||||||
|
## 💡 Pro Tips
|
||||||
|
|
||||||
|
1. **Test first**: Always test on a fresh VM before publishing
|
||||||
|
2. **Keep versions**: Don't delete old .deb files immediately
|
||||||
|
3. **Backup GPG key**: Store it safely offline
|
||||||
|
4. **Monitor downloads**: Use GitHub Insights or server logs
|
||||||
|
5. **Document everything**: Help users troubleshoot
|
||||||
|
6. **Version consistently**: Use semantic versioning
|
||||||
|
7. **Sign always**: Never publish unsigned repositories
|
||||||
|
|
||||||
|
## 🔗 Resources
|
||||||
|
|
||||||
|
- [Debian Repository Format](https://wiki.debian.org/DebianRepository/Format)
|
||||||
|
- [GitHub Pages Docs](https://docs.github.com/en/pages)
|
||||||
|
- [cargo-deb](https://github.com/kornelski/cargo-deb)
|
||||||
|
- [Ubuntu PPA Guide](https://help.launchpad.net/Packaging/PPA)
|
||||||
|
- [Debian Mentors](https://mentors.debian.net/)
|
||||||
|
|
||||||
|
## 🎊 Congratulations!
|
||||||
|
|
||||||
|
You now have everything you need to:
|
||||||
|
- ✅ Create your own APT repository
|
||||||
|
- ✅ Host it for free on GitHub Pages
|
||||||
|
- ✅ Automate the entire process
|
||||||
|
- ✅ Distribute packages professionally
|
||||||
|
- ✅ Provide easy installation for users
|
||||||
|
|
||||||
|
**No sponsor required. No approval needed. You're in control!** 🚀
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Questions?** Check the docs or open an issue.
|
||||||
|
|
||||||
|
**Ready to publish?** Run `./scripts/setup-apt-repo.sh` and follow the wizard!
|
||||||
109
GETTING_STARTED_NOW.md
Normal file
109
GETTING_STARTED_NOW.md
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
# 🚀 Get Your APT Repository Live in 5 Minutes
|
||||||
|
|
||||||
|
## You're Here Because...
|
||||||
|
|
||||||
|
You want to publish socktop packages via APT, but GitHub Pages won't let you select `apt-repo/` folder. Here's why and how to fix it:
|
||||||
|
|
||||||
|
**The Issue:** GitHub Pages only serves from `/` (root) or `/docs`, not custom folders like `/apt-repo`.
|
||||||
|
|
||||||
|
**The Solution:** Use a `gh-pages` branch where `apt-repo` contents go in the root.
|
||||||
|
|
||||||
|
## Quick Setup (5 Steps)
|
||||||
|
|
||||||
|
### 1. Create apt-repo locally (if you haven't)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/setup-apt-repo.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates `apt-repo/` with your packages and signs them.
|
||||||
|
|
||||||
|
### 2. Create gh-pages branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout --orphan gh-pages
|
||||||
|
git rm -rf .
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Copy apt-repo to root
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
rm -rf apt-repo
|
||||||
|
ls
|
||||||
|
# You should see: dists/ pool/ KEY.gpg index.html README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Push to GitHub
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "Initialize APT repository"
|
||||||
|
git push -u origin gh-pages
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Enable GitHub Pages
|
||||||
|
|
||||||
|
1. Go to: **Settings → Pages**
|
||||||
|
2. Source: **gh-pages** → **/ (root)**
|
||||||
|
3. Click **Save**
|
||||||
|
|
||||||
|
**Done!** ✅ Your repo will be live at `https://your-username.github.io/socktop/` in 1-2 minutes.
|
||||||
|
|
||||||
|
## Test It
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -I https://your-username.github.io/socktop/KEY.gpg
|
||||||
|
# Should return: HTTP/2 200
|
||||||
|
```
|
||||||
|
|
||||||
|
## Install It (On Any Debian/Ubuntu System)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://your-username.github.io/socktop/KEY.gpg | \
|
||||||
|
sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
|
||||||
|
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://your-username.github.io/socktop stable main" | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/socktop.list
|
||||||
|
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install socktop socktop-agent
|
||||||
|
```
|
||||||
|
|
||||||
|
## What's Next?
|
||||||
|
|
||||||
|
### Now (Optional):
|
||||||
|
- Customize `index.html` on gh-pages for a nice landing page
|
||||||
|
- Add installation instructions to your main README
|
||||||
|
|
||||||
|
### Later:
|
||||||
|
- Set up GitHub Actions automation (see `QUICK_START_APT_REPO.md`)
|
||||||
|
- Add more architectures (ARM64, ARMv7)
|
||||||
|
|
||||||
|
## Understanding the Setup
|
||||||
|
|
||||||
|
```
|
||||||
|
main branch: gh-pages branch:
|
||||||
|
├── src/ ├── dists/
|
||||||
|
├── Cargo.toml ├── pool/
|
||||||
|
├── scripts/ ├── KEY.gpg
|
||||||
|
└── apt-repo/ (local) └── index.html ← GitHub Pages serves this
|
||||||
|
|
||||||
|
Work here ↑ Published here ↑
|
||||||
|
```
|
||||||
|
|
||||||
|
- **main**: Your development work
|
||||||
|
- **gh-pages**: What users see/download
|
||||||
|
- **apt-repo/**: Local folder (ignored in git, see `.gitignore`)
|
||||||
|
|
||||||
|
## Need More Help?
|
||||||
|
|
||||||
|
- **Quick start**: `QUICK_START_APT_REPO.md`
|
||||||
|
- **Detailed setup**: `SETUP_GITHUB_PAGES.md`
|
||||||
|
- **Why gh-pages?**: `WHY_GHPAGES_BRANCH.md`
|
||||||
|
- **Full guide**: `docs/APT_REPOSITORY.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**You got this!** 🎉
|
||||||
42
KEY.gpg
Normal file
42
KEY.gpg
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mQGNBGkih7QBDADgX6sYMx2Lp6qcZxeCCizcy4TFsxcRJfp5mfbMplVES0hQToIP
|
||||||
|
EMC11JqPwQdLliXKjUr8Z2kgM2oqvH+dkdgzUGrw6kTK8YHc+qs37iJAOVS9D72X
|
||||||
|
tTld282NrtFwzb74nS2GKPkpWI7aSKBpHtWFPX/1ONsc56qGqFd3wwikEvCz8MeJ
|
||||||
|
HwCD1JZ9F+2DyyXWsTJNgDwPloJSUbtyVuk2gd6PeTg7AQdx92Pk/mggmYbHtP8N
|
||||||
|
wy072ku1g8K/hplmwIOGpSx1JWvAQkDU/Bb/jSqrYg2wSHO7IQnYE8I3x/zglYBl
|
||||||
|
FYNh47TVQr0zPVSYR1MQkHU5YLBTDc5UgDvtcsYUiTtq4D/m8HWmKja0/UKGxvDJ
|
||||||
|
P5sUPcp4dk77RdoCtUe5HImYGS8lo5N3+t0lz8sd9rYmRiIO4f7FJaJqJeHbUJyn
|
||||||
|
iw/GCQh5D5/D571dICrEq/QhL+k5KhJljPGoVMGPFXJIc7q+CxvGp2oOo5fOlbOn
|
||||||
|
3kSrM93AJPwT8FMAEQEAAbRFSmFzb24gV2l0dHkgKHNvY2t0b3AgYXB0IHNpZ25p
|
||||||
|
bmcga2V5KSA8amFzb25wd2l0dHkrc29ja3RvcEBwcm90b24ubWU+iQHOBBMBCgA4
|
||||||
|
FiEEHnVWqAU5uDlLwoINESwaeYRl+/IFAmkih7QCGwMFCwkIBwIGFQoJCAsCBBYC
|
||||||
|
AwECHgECF4AACgkQESwaeYRl+/KV+gwAzfZVZEhO7MQV2EmNeKVK1GycFSm2oUAl
|
||||||
|
ZbwNIEHu6+tOzqXJb8o65BtGlbLSGavsMpgRCK2SL83DdLOkutG1ahQiJr+5GaXC
|
||||||
|
zbQgX+VWqGPZtQ+I6/rVoYZPMTCrqpAmFgvVpqv0xod7w8/wny8/XmhQ37KY2/0l
|
||||||
|
B38oNTvdA7C8jzSrI6kr3XqurvQRW7z+MnC+nCp9Ob9bYtY0kpd4U3NrVdb8m32U
|
||||||
|
d5LVFwD1OGvzLOSqyJ33IKjSJc4KLvW+aEsHXe+fHO9UEzH8Nbo5MmVvX3QIHiyq
|
||||||
|
jD4zN16AGsGYqCK4irtQCiD3wBOdsG/RVkgIcdlmAH3EGEp7Ux8+7v1PXYI+UrSs
|
||||||
|
XE7f1xFTJ2r5TMex6W3he073Em4qhQsrnMF5syTZsM6N+5UqXVOM1RuDVVXr7929
|
||||||
|
hC3G8pK/A2W5Lwpxl2yzock2CxhvUn7M/xm4VbcPlWTCUd/QzU8VtsgaGHcuhi5e
|
||||||
|
xHY1AU07STLB9RinjBVf2bmk4oDQcmB6uQGNBGkih7QBDACrjE+xSWP92n931/5t
|
||||||
|
+tXcujwFlIpSZdbSQFr0B0YyjPRUP4FSzEGu8vuM5ChUfWKhmN1dDr5C4qFo9NgQ
|
||||||
|
6oCN2HubajSGyXNwnOMlMb5ck79Ubmy9yDV9/ZLqpJJiozGap2/EnNoDhaANlmUg
|
||||||
|
rfqUHpIB8XC2IZ0Itt05tp/u78dJiB+R6ReZn/bVUafNV4jIqYZfLRzI3FTJ4xvK
|
||||||
|
FGs/ER+JajAdJQ8LPfazmDQSGw0huguxhopZwKQ/qWZMn1OHq/ZaPvCqbQt3irLw
|
||||||
|
dLPDC4pEaYGRyADYeyuarG0DVyUQ9XRc/NufKDvOAn33LpBPBpcvNQAsVhWTCYl7
|
||||||
|
ogQ+suVYVN8Tu7v4bUSHKwzXKvLN/ojJX/Fh7eTW4TPsgLHNHAEDUkSQozIe9vO6
|
||||||
|
o+vydDqRxuXJgdkR7lqP6PQDYrhRYZGJf57eKf6VtTKYFaMbiMWPU+vcHeB0/iDe
|
||||||
|
Pv81qro2LD2PG5WCzDpNETBceCTjykb9r0VHx4/JsiojKmsAEQEAAYkBtgQYAQoA
|
||||||
|
IBYhBB51VqgFObg5S8KCDREsGnmEZfvyBQJpIoe0AhsMAAoJEBEsGnmEZfvyNp8M
|
||||||
|
AIH+6+hGB3qADdnhNgb+3fN0511eK9Uk82lxgGARLcD8GN1UP0HlvEqkxCHy3PUe
|
||||||
|
tHcsuYVz7i8pmpEGdFx9zv7MelenUsJniUQ++OZKx6iUG/MYqz//NxY+5lyRmcu2
|
||||||
|
aYvUxhkgf9zgxXTkTyV2VV32mX//cHcwc+c/089QAPzCMaSrHdNK+ED9+k8uquJ1
|
||||||
|
lSL9Bm15z/EV42v9Q/4KTM5OBLHpNw0Rvn9C0iuZVwHXBrrA/HSGXpA54AqNUMpZ
|
||||||
|
kRPgLQcy5yVE2y1aXLXt2XdTn6YPzrAjNoazYYuCWHYIZU7dGkIswpsDirDLKHdD
|
||||||
|
onb3VShmSpemYjsuFiqhfi6qwCkeHsz/CpQAp70SZ+z9oB8H80PJVKPbPIP3zEf3
|
||||||
|
i7bcsqHA7stF+8sJclXgxBUBeDJ3O2jN/scBOcvNA6xoRp7+oJbnjDRuxBmh+fVg
|
||||||
|
TIuw2++vTF2Ml0EMv7ePTpr7b1DofuJRNYGkuAIMVXHjLTqMiTJUce3OUy003zMg
|
||||||
|
Dg==
|
||||||
|
=AaPQ
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
221
QUICK_START_APT_REPO.md
Normal file
221
QUICK_START_APT_REPO.md
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
# Quick Start: Setting Up Your socktop APT Repository
|
||||||
|
|
||||||
|
This guide will get your APT repository up and running in **under 10 minutes**.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- [ ] Debian packages built (or use GitHub Actions to build them)
|
||||||
|
- [ ] GPG key for signing
|
||||||
|
- [ ] GitHub repository with Pages enabled
|
||||||
|
|
||||||
|
## Step 1: Create GPG Key (if needed)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Generate a new key
|
||||||
|
gpg --full-generate-key
|
||||||
|
|
||||||
|
# Select:
|
||||||
|
# - RSA and RSA (default)
|
||||||
|
# - 4096 bits
|
||||||
|
# - Key does not expire (or 2 years)
|
||||||
|
# - Your name and email
|
||||||
|
|
||||||
|
# Get your key ID
|
||||||
|
gpg --list-secret-keys --keyid-format LONG
|
||||||
|
# Look for the part after "rsa4096/" - that's your KEY-ID
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 2: Initialize Repository Locally
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd socktop
|
||||||
|
|
||||||
|
# Create the repository structure
|
||||||
|
./scripts/init-apt-repo.sh
|
||||||
|
|
||||||
|
# Build packages (or download from GitHub Actions)
|
||||||
|
cargo install cargo-deb
|
||||||
|
cargo deb --package socktop
|
||||||
|
cargo deb --package socktop_agent
|
||||||
|
|
||||||
|
# Add packages to repository
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop_*.deb
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb
|
||||||
|
|
||||||
|
# Sign the repository (replace YOUR-KEY-ID with actual key ID)
|
||||||
|
./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID
|
||||||
|
|
||||||
|
# Update URLs with your GitHub username
|
||||||
|
sed -i 's/YOUR-USERNAME/your-github-username/g' apt-repo/README.md apt-repo/index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 3: Publish to GitHub Pages (gh-pages branch)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create gh-pages branch
|
||||||
|
git checkout --orphan gh-pages
|
||||||
|
git rm -rf .
|
||||||
|
|
||||||
|
# Copy apt-repo CONTENTS to root (not the folder itself)
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
rm -rf apt-repo
|
||||||
|
|
||||||
|
# Commit and push
|
||||||
|
git add .
|
||||||
|
git commit -m "Initialize APT repository"
|
||||||
|
git push -u origin gh-pages
|
||||||
|
|
||||||
|
# Go back to main branch
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
Then in GitHub:
|
||||||
|
1. Go to **Settings → Pages**
|
||||||
|
2. Source: **Deploy from a branch**
|
||||||
|
3. Branch: **gh-pages** → **/ (root)** → **Save**
|
||||||
|
|
||||||
|
Wait 1-2 minutes, then visit: `https://your-username.github.io/socktop/`
|
||||||
|
|
||||||
|
## Step 4: Automate with GitHub Actions
|
||||||
|
|
||||||
|
Add these secrets to your repository (Settings → Secrets → Actions):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Export your private key
|
||||||
|
gpg --armor --export-secret-key YOUR-KEY-ID
|
||||||
|
|
||||||
|
# Copy the ENTIRE output and save as secret: GPG_PRIVATE_KEY
|
||||||
|
```
|
||||||
|
|
||||||
|
Add these three secrets:
|
||||||
|
- **GPG_PRIVATE_KEY**: Your exported private key
|
||||||
|
- **GPG_KEY_ID**: Your key ID (e.g., `ABC123DEF456`)
|
||||||
|
- **GPG_PASSPHRASE**: Your key passphrase (leave empty if no passphrase)
|
||||||
|
|
||||||
|
The workflow in `.github/workflows/publish-apt-repo.yml` will now:
|
||||||
|
- Build packages for AMD64 and ARM64
|
||||||
|
- Update the APT repository
|
||||||
|
- Sign with your GPG key
|
||||||
|
- Push to gh-pages automatically
|
||||||
|
|
||||||
|
Trigger it by:
|
||||||
|
- Creating a version tag: `git tag v1.50.0 && git push --tags`
|
||||||
|
- Manual dispatch from GitHub Actions tab
|
||||||
|
|
||||||
|
## Step 5: Test It
|
||||||
|
|
||||||
|
On any Debian/Ubuntu system:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Add your repository
|
||||||
|
curl -fsSL https://your-username.github.io/socktop/KEY.gpg | \
|
||||||
|
sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
|
||||||
|
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://your-username.github.io/socktop stable main" | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/socktop.list
|
||||||
|
|
||||||
|
# Install
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install socktop socktop-agent
|
||||||
|
|
||||||
|
# Verify
|
||||||
|
socktop --version
|
||||||
|
socktop_agent --version
|
||||||
|
```
|
||||||
|
|
||||||
|
## Maintenance
|
||||||
|
|
||||||
|
### Add a New Version
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build new packages
|
||||||
|
cargo deb --package socktop
|
||||||
|
cargo deb --package socktop_agent
|
||||||
|
|
||||||
|
# Add to repository
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop_*.deb
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb
|
||||||
|
|
||||||
|
# Re-sign
|
||||||
|
./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID
|
||||||
|
|
||||||
|
# Publish
|
||||||
|
cd docs/apt # or wherever your apt-repo is
|
||||||
|
git add .
|
||||||
|
git commit -m "Release v1.51.0"
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Or Just Tag and Let GitHub Actions Do It
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Update version in Cargo.toml
|
||||||
|
# Commit changes
|
||||||
|
git add .
|
||||||
|
git commit -m "Bump version to 1.51.0"
|
||||||
|
|
||||||
|
# Tag and push
|
||||||
|
git tag v1.51.0
|
||||||
|
git push origin main --tags
|
||||||
|
|
||||||
|
# GitHub Actions will:
|
||||||
|
# - Build packages for AMD64 and ARM64
|
||||||
|
# - Update gh-pages branch automatically
|
||||||
|
# - Sign and publish!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### "Repository not signed" error
|
||||||
|
|
||||||
|
Make sure you signed it:
|
||||||
|
```bash
|
||||||
|
./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID
|
||||||
|
ls apt-repo/dists/stable/Release*
|
||||||
|
# Should show: Release, Release.gpg, InRelease, KEY.gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
### "404 Not Found" on GitHub Pages
|
||||||
|
|
||||||
|
1. Check Settings → Pages is enabled
|
||||||
|
2. Wait 2-3 minutes for GitHub to deploy
|
||||||
|
3. Verify the URL structure matches your settings
|
||||||
|
|
||||||
|
### GitHub Actions not signing
|
||||||
|
|
||||||
|
Check that all three secrets are set correctly:
|
||||||
|
- Settings → Secrets and variables → Actions
|
||||||
|
- Make sure GPG_PRIVATE_KEY includes the BEGIN/END lines
|
||||||
|
- Test locally first
|
||||||
|
|
||||||
|
## What's Next?
|
||||||
|
|
||||||
|
✅ You now have a working APT repository!
|
||||||
|
|
||||||
|
**Share it:**
|
||||||
|
- Add installation instructions to your main README
|
||||||
|
- Tweet/blog about it
|
||||||
|
- Submit to awesome-rust lists
|
||||||
|
|
||||||
|
**Improve it:**
|
||||||
|
- Customize your GitHub Pages site (it's just HTML!)
|
||||||
|
- Add more architectures (ARMv7)
|
||||||
|
- Create multiple distributions (stable, testing)
|
||||||
|
- Set up download statistics
|
||||||
|
- Apply to Ubuntu PPA (Launchpad)
|
||||||
|
- Eventually submit to official Debian repos
|
||||||
|
|
||||||
|
## Full Documentation
|
||||||
|
|
||||||
|
For detailed information, see:
|
||||||
|
- `docs/APT_REPOSITORY.md` - Complete APT repository guide
|
||||||
|
- `docs/DEBIAN_PACKAGING.md` - Debian packaging details
|
||||||
|
- `DEBIAN_PACKAGING_SUMMARY.md` - Quick summary
|
||||||
|
|
||||||
|
## Questions?
|
||||||
|
|
||||||
|
Open an issue on GitHub or check the full documentation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Happy packaging! 📦**
|
||||||
38
README.md
Normal file
38
README.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# socktop APT Repository
|
||||||
|
|
||||||
|
This repository contains Debian packages for socktop and socktop-agent.
|
||||||
|
|
||||||
|
## Adding this repository
|
||||||
|
|
||||||
|
Add the repository to your system:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Add the GPG key
|
||||||
|
curl -fsSL https://jasonwitty.github.io/socktop/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
|
||||||
|
|
||||||
|
# Add the repository
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://jasonwitty.github.io/socktop stable main" | sudo tee /etc/apt/sources.list.d/socktop.list
|
||||||
|
|
||||||
|
# Update and install
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install socktop socktop-agent
|
||||||
|
```
|
||||||
|
|
||||||
|
## Manual Installation
|
||||||
|
|
||||||
|
You can also download and install packages manually from the `pool/main/` directory.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://jasonwitty.github.io/socktop/pool/main/socktop_VERSION_ARCH.deb
|
||||||
|
sudo dpkg -i socktop_VERSION_ARCH.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
## Supported Architectures
|
||||||
|
|
||||||
|
- amd64 (x86_64)
|
||||||
|
- arm64 (aarch64)
|
||||||
|
- armhf (32-bit ARM)
|
||||||
|
|
||||||
|
## Building from Source
|
||||||
|
|
||||||
|
See the main repository at https://github.com/jasonwitty/socktop
|
||||||
351
SETUP_GITHUB_PAGES.md
Normal file
351
SETUP_GITHUB_PAGES.md
Normal file
@ -0,0 +1,351 @@
|
|||||||
|
# Setting Up GitHub Pages for socktop APT Repository
|
||||||
|
|
||||||
|
This guide walks you through the initial setup of your APT repository on GitHub Pages using the `gh-pages` branch.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- [ ] You've run `./scripts/setup-apt-repo.sh` or manually created `apt-repo/`
|
||||||
|
- [ ] `apt-repo/` contains signed packages and metadata
|
||||||
|
- [ ] You have a GitHub repository for socktop
|
||||||
|
|
||||||
|
## Step-by-Step Setup
|
||||||
|
|
||||||
|
### 1. Verify Your Local Repository
|
||||||
|
|
||||||
|
First, make sure everything is ready:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check that apt-repo exists and has content
|
||||||
|
ls -la apt-repo/
|
||||||
|
|
||||||
|
# You should see:
|
||||||
|
# - dists/stable/Release, Release.gpg, InRelease
|
||||||
|
# - pool/main/*.deb
|
||||||
|
# - KEY.gpg
|
||||||
|
# - index.html, README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Create and Switch to gh-pages Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create a new orphan branch (no history from main)
|
||||||
|
git checkout --orphan gh-pages
|
||||||
|
|
||||||
|
# Remove all files from staging
|
||||||
|
git rm -rf .
|
||||||
|
```
|
||||||
|
|
||||||
|
**Important:** This creates a completely separate branch. Don't worry - your main branch is safe!
|
||||||
|
|
||||||
|
### 3. Copy APT Repository to Root
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Copy CONTENTS of apt-repo to root of gh-pages
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
|
||||||
|
# Remove the apt-repo directory itself
|
||||||
|
rm -rf apt-repo
|
||||||
|
|
||||||
|
# Verify the structure
|
||||||
|
ls -la
|
||||||
|
|
||||||
|
# You should see in the current directory:
|
||||||
|
# - dists/
|
||||||
|
# - pool/
|
||||||
|
# - KEY.gpg
|
||||||
|
# - index.html
|
||||||
|
# - README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**Why root?** GitHub Pages can only serve from:
|
||||||
|
- `/` (root) - what we're doing
|
||||||
|
- `/docs` directory
|
||||||
|
- NOT from custom directories like `/apt-repo`
|
||||||
|
|
||||||
|
### 4. Commit and Push
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Add all files
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Commit
|
||||||
|
git commit -m "Initialize APT repository for GitHub Pages"
|
||||||
|
|
||||||
|
# Push to gh-pages branch
|
||||||
|
git push -u origin gh-pages
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Return to Main Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Switch back to your main development branch
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
# Verify you're back on main
|
||||||
|
git branch
|
||||||
|
# Should show: * main
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Enable GitHub Pages
|
||||||
|
|
||||||
|
1. Go to your repository on GitHub
|
||||||
|
2. Click **Settings** (top right)
|
||||||
|
3. Click **Pages** (left sidebar)
|
||||||
|
4. Under "Build and deployment":
|
||||||
|
- Source: **Deploy from a branch**
|
||||||
|
- Branch: **gh-pages**
|
||||||
|
- Folder: **/ (root)**
|
||||||
|
- Click **Save**
|
||||||
|
|
||||||
|
### 7. Wait for Deployment
|
||||||
|
|
||||||
|
GitHub will deploy your site. This usually takes 1-2 minutes.
|
||||||
|
|
||||||
|
You can watch the progress:
|
||||||
|
- Go to **Actions** tab
|
||||||
|
- Look for "pages build and deployment" workflow
|
||||||
|
|
||||||
|
### 8. Verify Your Repository is Live
|
||||||
|
|
||||||
|
Once deployed, your repository will be at:
|
||||||
|
|
||||||
|
```
|
||||||
|
https://YOUR-USERNAME.github.io/socktop/
|
||||||
|
```
|
||||||
|
|
||||||
|
Test it:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check the public key is accessible
|
||||||
|
curl -I https://YOUR-USERNAME.github.io/socktop/KEY.gpg
|
||||||
|
|
||||||
|
# Should return: HTTP/2 200
|
||||||
|
|
||||||
|
# Check the Release file
|
||||||
|
curl -I https://YOUR-USERNAME.github.io/socktop/dists/stable/Release
|
||||||
|
|
||||||
|
# Should return: HTTP/2 200
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9. Test Installation (Optional but Recommended)
|
||||||
|
|
||||||
|
On a Debian/Ubuntu VM or system:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Add GPG key
|
||||||
|
curl -fsSL https://YOUR-USERNAME.github.io/socktop/KEY.gpg | \
|
||||||
|
sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
|
||||||
|
|
||||||
|
# Add repository
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://YOUR-USERNAME.github.io/socktop stable main" | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/socktop.list
|
||||||
|
|
||||||
|
# Update package lists
|
||||||
|
sudo apt update
|
||||||
|
|
||||||
|
# You should see:
|
||||||
|
# Get:1 https://YOUR-USERNAME.github.io/socktop stable InRelease [xxx B]
|
||||||
|
|
||||||
|
# Install packages
|
||||||
|
sudo apt install socktop socktop-agent
|
||||||
|
|
||||||
|
# Verify
|
||||||
|
socktop --version
|
||||||
|
```
|
||||||
|
|
||||||
|
## Understanding the Two Branches
|
||||||
|
|
||||||
|
After setup, you'll have two branches:
|
||||||
|
|
||||||
|
### `main` branch (development)
|
||||||
|
```
|
||||||
|
main/
|
||||||
|
├── src/
|
||||||
|
├── Cargo.toml
|
||||||
|
├── scripts/
|
||||||
|
├── docs/
|
||||||
|
├── apt-repo/ ← Local build artifact (not published)
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
**Purpose:** Source code, development, building packages
|
||||||
|
|
||||||
|
### `gh-pages` branch (published)
|
||||||
|
```
|
||||||
|
gh-pages/
|
||||||
|
├── dists/
|
||||||
|
├── pool/
|
||||||
|
├── KEY.gpg
|
||||||
|
├── index.html ← Customize this for a nice landing page!
|
||||||
|
└── README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**Purpose:** Published APT repository served by GitHub Pages
|
||||||
|
|
||||||
|
## Workflow Going Forward
|
||||||
|
|
||||||
|
### Manual Updates
|
||||||
|
|
||||||
|
When you release a new version:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. On main branch, build new packages
|
||||||
|
git checkout main
|
||||||
|
cargo deb --package socktop
|
||||||
|
cargo deb --package socktop_agent
|
||||||
|
|
||||||
|
# 2. Update local apt-repo
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop_*.deb
|
||||||
|
./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb
|
||||||
|
./scripts/sign-apt-repo.sh apt-repo stable YOUR-GPG-KEY-ID
|
||||||
|
|
||||||
|
# 3. Switch to gh-pages and update
|
||||||
|
git checkout gh-pages
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
git add .
|
||||||
|
git commit -m "Release v1.51.0"
|
||||||
|
git push origin gh-pages
|
||||||
|
|
||||||
|
# 4. Return to main
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Automated Updates (Recommended)
|
||||||
|
|
||||||
|
Set up GitHub Actions to do this automatically:
|
||||||
|
|
||||||
|
1. Add GitHub Secrets (Settings → Secrets → Actions):
|
||||||
|
- `GPG_PRIVATE_KEY` - Your exported private key
|
||||||
|
- `GPG_KEY_ID` - Your GPG key ID
|
||||||
|
- `GPG_PASSPHRASE` - Your GPG passphrase (if any)
|
||||||
|
|
||||||
|
2. Tag and push:
|
||||||
|
```bash
|
||||||
|
git tag v1.51.0
|
||||||
|
git push origin main --tags
|
||||||
|
```
|
||||||
|
|
||||||
|
3. GitHub Actions will automatically:
|
||||||
|
- Build packages for AMD64 and ARM64
|
||||||
|
- Update apt-repo
|
||||||
|
- Sign with your GPG key
|
||||||
|
- Push to gh-pages
|
||||||
|
- Create GitHub Release
|
||||||
|
|
||||||
|
See `.github/workflows/publish-apt-repo.yml` for details.
|
||||||
|
|
||||||
|
## Customizing Your GitHub Pages Site
|
||||||
|
|
||||||
|
The `gh-pages` branch contains `index.html` which users see when they visit:
|
||||||
|
`https://YOUR-USERNAME.github.io/socktop/`
|
||||||
|
|
||||||
|
You can customize this! On the `gh-pages` branch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout gh-pages
|
||||||
|
|
||||||
|
# Edit index.html
|
||||||
|
nano index.html
|
||||||
|
|
||||||
|
# Add features, badges, screenshots, etc.
|
||||||
|
|
||||||
|
git add index.html
|
||||||
|
git commit -m "Improve landing page"
|
||||||
|
git push origin gh-pages
|
||||||
|
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### "404 Not Found" on GitHub Pages
|
||||||
|
|
||||||
|
**Check:**
|
||||||
|
- Settings → Pages shows "Your site is live at..."
|
||||||
|
- Wait 2-3 minutes after pushing
|
||||||
|
- Verify branch is `gh-pages` and folder is `/`
|
||||||
|
- Check Actions tab for deployment errors
|
||||||
|
|
||||||
|
### "Repository not found" when installing
|
||||||
|
|
||||||
|
**Check:**
|
||||||
|
- URL is correct: `https://USERNAME.github.io/REPO/` (no trailing /apt-repo)
|
||||||
|
- Files exist at the URLs:
|
||||||
|
```bash
|
||||||
|
curl -I https://USERNAME.github.io/REPO/dists/stable/InRelease
|
||||||
|
curl -I https://USERNAME.github.io/REPO/KEY.gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
### "GPG error" when installing
|
||||||
|
|
||||||
|
**Check:**
|
||||||
|
- Repository is signed: `ls gh-pages/dists/stable/Release.gpg`
|
||||||
|
- Users imported the key: `curl https://USERNAME.github.io/REPO/KEY.gpg | gpg --import`
|
||||||
|
|
||||||
|
### Changes not appearing
|
||||||
|
|
||||||
|
**Check:**
|
||||||
|
- You committed and pushed to `gh-pages` (not `main`)
|
||||||
|
- Wait 1-2 minutes for GitHub to redeploy
|
||||||
|
- Clear browser cache if viewing index.html
|
||||||
|
- For apt: `sudo apt clean && sudo apt update`
|
||||||
|
|
||||||
|
## Success Checklist
|
||||||
|
|
||||||
|
After completing this guide, you should have:
|
||||||
|
|
||||||
|
- [ ] `gh-pages` branch created and pushed
|
||||||
|
- [ ] GitHub Pages enabled and deployed
|
||||||
|
- [ ] Site accessible at `https://USERNAME.github.io/socktop/`
|
||||||
|
- [ ] `KEY.gpg` downloadable
|
||||||
|
- [ ] `dists/stable/InRelease` accessible
|
||||||
|
- [ ] Packages in `pool/main/*.deb` downloadable
|
||||||
|
- [ ] Successfully tested installation on a test system
|
||||||
|
- [ ] Understand the workflow for future updates
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
1. **Update your main README.md** with installation instructions
|
||||||
|
2. **Set up GitHub Actions** for automated releases
|
||||||
|
3. **Customize index.html** on gh-pages for a nice landing page
|
||||||
|
4. **Test on multiple architectures** (AMD64, ARM64)
|
||||||
|
5. **Share your repository** with users
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
**Switch branches:**
|
||||||
|
```bash
|
||||||
|
git checkout main # Development
|
||||||
|
git checkout gh-pages # Published site
|
||||||
|
```
|
||||||
|
|
||||||
|
**Update published site manually:**
|
||||||
|
```bash
|
||||||
|
git checkout main
|
||||||
|
# ... build packages, update apt-repo ...
|
||||||
|
git checkout gh-pages
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
git add . && git commit -m "Update" && git push
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
**Your repository URL:**
|
||||||
|
```
|
||||||
|
https://YOUR-USERNAME.github.io/socktop/
|
||||||
|
```
|
||||||
|
|
||||||
|
**User installation command:**
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://YOUR-USERNAME.github.io/socktop/KEY.gpg | \
|
||||||
|
sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://YOUR-USERNAME.github.io/socktop stable main" | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/socktop.list
|
||||||
|
sudo apt update && sudo apt install socktop socktop-agent
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Need help?** See:
|
||||||
|
- `QUICK_START_APT_REPO.md` - Overall quick start
|
||||||
|
- `docs/APT_REPOSITORY.md` - Comprehensive guide
|
||||||
|
- `docs/APT_WORKFLOW.md` - Visual workflow diagrams
|
||||||
119
WHY_GHPAGES_BRANCH.md
Normal file
119
WHY_GHPAGES_BRANCH.md
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
# Why We Use the gh-pages Branch
|
||||||
|
|
||||||
|
## The Problem
|
||||||
|
|
||||||
|
GitHub Pages has a limitation - it can only serve static sites from:
|
||||||
|
|
||||||
|
1. **`/` (root)** of a branch
|
||||||
|
2. **`/docs`** directory of a branch
|
||||||
|
3. **NOT** from custom directories like `/apt-repo`
|
||||||
|
|
||||||
|
## Why Not `/docs`?
|
||||||
|
|
||||||
|
When you tried to enable GitHub Pages with `apt-repo/` checked into main, you couldn't select it because:
|
||||||
|
|
||||||
|
```
|
||||||
|
main/
|
||||||
|
├── src/
|
||||||
|
├── Cargo.toml
|
||||||
|
├── apt-repo/ ← GitHub Pages can't serve from here!
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
You could move it to `/docs`:
|
||||||
|
```
|
||||||
|
main/
|
||||||
|
├── src/
|
||||||
|
├── Cargo.toml
|
||||||
|
├── docs/ ← GitHub Pages CAN serve from here
|
||||||
|
│ ├── dists/
|
||||||
|
│ ├── pool/
|
||||||
|
│ └── ...
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
But this has downsides:
|
||||||
|
- ❌ Mixed source code and published content
|
||||||
|
- ❌ Large .deb files bloat the main branch
|
||||||
|
- ❌ Can't easily customize the site without affecting source
|
||||||
|
- ❌ Messy git history with binary files
|
||||||
|
|
||||||
|
## Why gh-pages Branch (Our Solution)
|
||||||
|
|
||||||
|
Using a separate `gh-pages` branch is cleaner:
|
||||||
|
|
||||||
|
```
|
||||||
|
main branch (source code):
|
||||||
|
├── src/
|
||||||
|
├── Cargo.toml
|
||||||
|
├── scripts/
|
||||||
|
└── docs/ ← Documentation source
|
||||||
|
|
||||||
|
gh-pages branch (published):
|
||||||
|
├── dists/
|
||||||
|
├── pool/
|
||||||
|
├── KEY.gpg
|
||||||
|
├── index.html ← Customizable landing page
|
||||||
|
└── README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Benefits
|
||||||
|
|
||||||
|
✅ **Clean separation**: Source code stays in `main`, published content in `gh-pages`
|
||||||
|
✅ **No binary bloat**: .deb files don't clutter your main branch history
|
||||||
|
✅ **Easy automation**: GitHub Actions can push to gh-pages without affecting main
|
||||||
|
✅ **Customizable**: You can make a beautiful landing page on gh-pages
|
||||||
|
✅ **Standard practice**: Most GitHub Pages projects use gh-pages branch
|
||||||
|
✅ **Root URL**: Your repo is at `https://username.github.io/socktop/` (not `/apt-repo`)
|
||||||
|
|
||||||
|
### Workflow
|
||||||
|
|
||||||
|
```
|
||||||
|
Developer (main branch)
|
||||||
|
↓
|
||||||
|
Build packages
|
||||||
|
↓
|
||||||
|
Update apt-repo/ (local)
|
||||||
|
↓
|
||||||
|
Push to gh-pages branch
|
||||||
|
↓
|
||||||
|
GitHub Pages serves
|
||||||
|
↓
|
||||||
|
Users: apt install socktop
|
||||||
|
```
|
||||||
|
|
||||||
|
## The Setup
|
||||||
|
|
||||||
|
**One-time setup:**
|
||||||
|
```bash
|
||||||
|
git checkout --orphan gh-pages
|
||||||
|
git rm -rf .
|
||||||
|
cp -r apt-repo/* .
|
||||||
|
rm -rf apt-repo
|
||||||
|
git add . && git commit -m "Initialize APT repository"
|
||||||
|
git push -u origin gh-pages
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
**Going forward:**
|
||||||
|
- Work on `main` branch for development
|
||||||
|
- `gh-pages` branch gets updated by GitHub Actions (or manually)
|
||||||
|
- Never need to switch branches manually after automation is set up!
|
||||||
|
|
||||||
|
## Comparison
|
||||||
|
|
||||||
|
| Approach | Location | URL | Pros | Cons |
|
||||||
|
|----------|----------|-----|------|------|
|
||||||
|
| **gh-pages branch** ✅ | gh-pages:/ | `username.github.io/socktop/` | Clean, automated, customizable | Two branches |
|
||||||
|
| `/docs` on main | main:/docs | `username.github.io/socktop/` | One branch | Mixed content, binary bloat |
|
||||||
|
| `/apt-repo` on main | main:/apt-repo | ❌ Not possible | - | GitHub Pages won't allow it |
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
The `gh-pages` branch approach is:
|
||||||
|
- The **cleanest** solution
|
||||||
|
- The **most flexible** for customization
|
||||||
|
- The **easiest to automate**
|
||||||
|
- **Industry standard** for GitHub Pages
|
||||||
|
|
||||||
|
That's why we chose it! 🚀
|
||||||
32
dists/stable/InRelease
Normal file
32
dists/stable/InRelease
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
|
Hash: SHA512
|
||||||
|
|
||||||
|
Origin: socktop
|
||||||
|
Label: socktop
|
||||||
|
Suite: stable
|
||||||
|
Codename: stable
|
||||||
|
Architectures: amd64 arm64 armhf
|
||||||
|
Components: main
|
||||||
|
Description: socktop APT repository
|
||||||
|
Date: Sun, 23 Nov 2025 04:05:21 +0000
|
||||||
|
MD5Sum:
|
||||||
|
0bddefb2f13cb7c86cd05fe1ce20310f 1549 main/binary-amd64/Packages
|
||||||
|
674f0e552cbb7dc65380651a2a8d279e 799 main/binary-amd64/Packages.gz
|
||||||
|
SHA256:
|
||||||
|
babfbb4839e7fdfbc83742c16996791b0402a1315889b530330b338380398263 1549 main/binary-amd64/Packages
|
||||||
|
f8c48d0f7bf53eb02c6dbf5f1cdd046fe71b87273cf763c5bb2e95d9757a7a82 799 main/binary-amd64/Packages.gz
|
||||||
|
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQGzBAEBCgAdFiEEHnVWqAU5uDlLwoINESwaeYRl+/IFAmkiiAYACgkQESwaeYRl
|
||||||
|
+/KBsAv/eYhnK/XrNtPhLyw/zX2cGfUtBsBZrypFhV/n+TvudAIwQaqxDEvLlBUn
|
||||||
|
HBAhMKDQXGs7V45+nOgDX4rKWUqJh4SPbJgNbVte2PX7U+hsMpZBsYp3vkjApgTO
|
||||||
|
pq2CCkViyBXgTY+6vUigtvfJ9afTTWI6Qm4dLXZ7hxErBxgHQyowOoO/sF92cNOu
|
||||||
|
AosBMpE+qSy7sVqJU5g/JXJh0kddKFotXHSGA1kFMzJafJC/n5nLrusDzFJRQqyH
|
||||||
|
Io+6inYWjlb5o79z0tJzAvG1mgplLRppMBjoVJ/RJ+gT+QE70kokR6wvsgDqsKNd
|
||||||
|
mvB0TNj0zY0g6Is6V3XMyf0u+6BtLTbua913HPiqBfErgeV58vzsst+y0It42TXi
|
||||||
|
aw+UF2Kw/YhPq1rZFxgnAVcMja3qlXWpH57gmgIPovBCsPsiywWiHLsSHRzAI22b
|
||||||
|
zeTsUST/4toR/ruZVbUZvWoWAR4tzsSuwXJFx/hhinTQQTNHErXASOX986UaL9L7
|
||||||
|
o2/pTKLe
|
||||||
|
=IeBY
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
14
dists/stable/Release
Normal file
14
dists/stable/Release
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
Origin: socktop
|
||||||
|
Label: socktop
|
||||||
|
Suite: stable
|
||||||
|
Codename: stable
|
||||||
|
Architectures: amd64 arm64 armhf
|
||||||
|
Components: main
|
||||||
|
Description: socktop APT repository
|
||||||
|
Date: Sun, 23 Nov 2025 04:05:21 +0000
|
||||||
|
MD5Sum:
|
||||||
|
0bddefb2f13cb7c86cd05fe1ce20310f 1549 main/binary-amd64/Packages
|
||||||
|
674f0e552cbb7dc65380651a2a8d279e 799 main/binary-amd64/Packages.gz
|
||||||
|
SHA256:
|
||||||
|
babfbb4839e7fdfbc83742c16996791b0402a1315889b530330b338380398263 1549 main/binary-amd64/Packages
|
||||||
|
f8c48d0f7bf53eb02c6dbf5f1cdd046fe71b87273cf763c5bb2e95d9757a7a82 799 main/binary-amd64/Packages.gz
|
||||||
14
dists/stable/Release.gpg
Normal file
14
dists/stable/Release.gpg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQGzBAABCgAdFiEEHnVWqAU5uDlLwoINESwaeYRl+/IFAmkiiAEACgkQESwaeYRl
|
||||||
|
+/KzeAv+OUIbxud5FboerwpAJULV+rS3+VX4kvwg/daVZ3yX3tJNrsyNCHgmWLVu
|
||||||
|
fLeEFFc2Ax9GvFW4jrbxRAGD+3TXQEEFkb5lGzYyDjlgVzR6wLiVTTrmzWoK+cbB
|
||||||
|
4DMozqeLiZFfQjq4UFn3+mwiYFX9Dj7PVF0M60XAUJSObbJFmaEPZIfx6wcZfkiL
|
||||||
|
lLLk1eeU5MPiyudPOhVGgaD76KrUCw+8DBNKoCKIEcCY0LvuKtUK8mWYXRSPSved
|
||||||
|
4Znd3QZz063Z6R+Lj1XlGLoTPResna28T/Nca+2JgLhbrihsLMcHoFxmrvFP9FpT
|
||||||
|
MChKngj7NnGt0yqHH5J16hdwMra/vvhmF0yoQ0loIcy+q06tYEqOcau8tvAjfbId
|
||||||
|
k3rgQgnxxVE8WUmV9Bugp7jhNMO+ImKWMwzEr6wGd9ZHqpknUlAaWeO73VP+qtAN
|
||||||
|
6mEqWhkqvXGg+srH6qp3Sg0W28dYG29X3Kx8jOp7HeyvA/gLZRN7L+bq/XaA7WFA
|
||||||
|
1hba6LIY
|
||||||
|
=QoLf
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
38
dists/stable/main/binary-amd64/Packages
Normal file
38
dists/stable/main/binary-amd64/Packages
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Package: socktop
|
||||||
|
Version: 1.50.0-1
|
||||||
|
Architecture: amd64
|
||||||
|
Maintainer: Jason Witty <jasonpwitty+socktop@proton.me>
|
||||||
|
Installed-Size: 3459
|
||||||
|
Filename: pool/main/socktop_1.50.0-1_amd64.deb
|
||||||
|
Size: 1278940
|
||||||
|
MD5sum: 0215e178e306d9379669065e8c78582b
|
||||||
|
SHA1: 04e0416389f5cecd584fd1f6b3568711f2645eee
|
||||||
|
SHA256: 69eb04b1de48541c95950a97b16357fcd9c51ffaceb143f63de4a9d758fad297
|
||||||
|
Section: admin
|
||||||
|
Priority: optional
|
||||||
|
Homepage: https://github.com/jasonwitty/socktop
|
||||||
|
Description: Remote system monitor over WebSocket, TUI like top
|
||||||
|
socktop is a remote system monitor with a rich terminal user interface (TUI)
|
||||||
|
that connects to remote hosts running the socktop_agent over WebSocket. It
|
||||||
|
provides real-time monitoring of CPU, memory, processes, and more with an
|
||||||
|
interface similar to the traditional 'top' command.
|
||||||
|
|
||||||
|
Package: socktop-agent
|
||||||
|
Version: 1.50.2-1
|
||||||
|
Architecture: amd64
|
||||||
|
Maintainer: Jason Witty <jasonpwitty+socktop@proton.me>
|
||||||
|
Installed-Size: 6793
|
||||||
|
Filename: pool/main/socktop-agent_1.50.2-1_amd64.deb
|
||||||
|
Size: 1896272
|
||||||
|
MD5sum: 22e78d03e83dcf84d6ec4a009b285902
|
||||||
|
SHA1: 26a9f4fedfdba06a047044027223f2944cf72ba6
|
||||||
|
SHA256: 11922af475146f60347a9c52cff4bbce1ce524bdb4293b2c436f3c71876e17d5
|
||||||
|
Section: admin
|
||||||
|
Priority: optional
|
||||||
|
Homepage: https://github.com/jasonwitty/socktop
|
||||||
|
Description: Socktop agent daemon. Serves host metrics over WebSocket.
|
||||||
|
socktop_agent is the daemon component that runs on remote hosts to collect and
|
||||||
|
serve system metrics over WebSocket. It gathers CPU, memory, disk, network,
|
||||||
|
GPU, and process information that can be monitored remotely by the socktop TUI
|
||||||
|
client.
|
||||||
|
|
||||||
BIN
dists/stable/main/binary-amd64/Packages.gz
Normal file
BIN
dists/stable/main/binary-amd64/Packages.gz
Normal file
Binary file not shown.
5
dists/stable/main/binary-amd64/Release
Normal file
5
dists/stable/main/binary-amd64/Release
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Archive: stable
|
||||||
|
Component: main
|
||||||
|
Origin: socktop
|
||||||
|
Label: socktop
|
||||||
|
Architecture: amd64
|
||||||
58
index.html
Normal file
58
index.html
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>socktop APT Repository</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 50px auto;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background: #f4f4f4;
|
||||||
|
padding: 2px 6px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #f4f4f4;
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 5px;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
h1 { color: #333; }
|
||||||
|
h2 { color: #555; margin-top: 30px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>socktop APT Repository</h1>
|
||||||
|
<p>System monitor with remote agent support for Linux systems.</p>
|
||||||
|
|
||||||
|
<h2>Adding this repository</h2>
|
||||||
|
<pre><code># Add the GPG key
|
||||||
|
curl -fsSL https://jasonwitty.github.io/socktop/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
|
||||||
|
|
||||||
|
# Add the repository
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://jasonwitty.github.io/socktop stable main" | sudo tee /etc/apt/sources.list.d/socktop.list
|
||||||
|
|
||||||
|
# Update and install
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install socktop socktop-agent</code></pre>
|
||||||
|
|
||||||
|
<h2>Manual Installation</h2>
|
||||||
|
<p>Download packages from <a href="pool/main/">pool/main/</a></p>
|
||||||
|
|
||||||
|
<h2>Supported Architectures</h2>
|
||||||
|
<ul>
|
||||||
|
<li>amd64 (x86_64)</li>
|
||||||
|
<li>arm64 (aarch64)</li>
|
||||||
|
<li>armhf (32-bit ARM)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Source Code</h2>
|
||||||
|
<p>Visit the <a href="https://github.com/jasonwitty/socktop">GitHub repository</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
pool/main/socktop-agent_1.50.2-1_amd64.deb
Normal file
BIN
pool/main/socktop-agent_1.50.2-1_amd64.deb
Normal file
Binary file not shown.
BIN
pool/main/socktop_1.50.0-1_amd64.deb
Normal file
BIN
pool/main/socktop_1.50.0-1_amd64.deb
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user