243 lines
5.4 KiB
Markdown
243 lines
5.4 KiB
Markdown
|
|
# Configuration Files Directory
|
||
|
|
|
||
|
|
This directory contains configuration files that will be mounted into the Docker container at runtime.
|
||
|
|
|
||
|
|
## Required Files
|
||
|
|
|
||
|
|
Place your actual configuration files in this directory before building/running the container:
|
||
|
|
|
||
|
|
### 1. Alacritty Configuration
|
||
|
|
|
||
|
|
**`alacritty.toml`**
|
||
|
|
- Terminal emulator configuration
|
||
|
|
- Copy from: `alacritty.toml.example`
|
||
|
|
- Customize font, opacity, colors, key bindings
|
||
|
|
|
||
|
|
**`catppuccin-frappe.toml`**
|
||
|
|
- Catppuccin Frappe color theme for Alacritty
|
||
|
|
- Copy from: `catppuccin-frappe.toml.example`
|
||
|
|
- Matches the web interface theme
|
||
|
|
|
||
|
|
### 2. socktop Configuration
|
||
|
|
|
||
|
|
**`profiles.json`**
|
||
|
|
- socktop profile definitions for your remote systems
|
||
|
|
- Copy from: `profiles.json.example`
|
||
|
|
- Update with your actual host IPs and connection details
|
||
|
|
|
||
|
|
### 3. SSH Keys
|
||
|
|
|
||
|
|
**`rpi-master.pem`**
|
||
|
|
- SSH private key for master node
|
||
|
|
- **IMPORTANT**: Set permissions to 600
|
||
|
|
|
||
|
|
**`rpi-worker-1.pem`**
|
||
|
|
- SSH private key for worker node 1
|
||
|
|
- **IMPORTANT**: Set permissions to 600
|
||
|
|
|
||
|
|
**`rpi-worker-2.pem`**
|
||
|
|
- SSH private key for worker node 2
|
||
|
|
- **IMPORTANT**: Set permissions to 600
|
||
|
|
|
||
|
|
**`rpi-worker-3.pem`**
|
||
|
|
- SSH private key for worker node 3
|
||
|
|
- **IMPORTANT**: Set permissions to 600
|
||
|
|
|
||
|
|
## Quick Setup
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Copy example files
|
||
|
|
cp alacritty.toml.example alacritty.toml
|
||
|
|
cp catppuccin-frappe.toml.example catppuccin-frappe.toml
|
||
|
|
cp profiles.json.example profiles.json
|
||
|
|
|
||
|
|
# Copy your SSH keys (from wherever you have them)
|
||
|
|
cp /path/to/your/rpi-master.pem .
|
||
|
|
cp /path/to/your/rpi-worker-1.pem .
|
||
|
|
cp /path/to/your/rpi-worker-2.pem .
|
||
|
|
cp /path/to/your/rpi-worker-3.pem .
|
||
|
|
|
||
|
|
# Set correct permissions on SSH keys
|
||
|
|
chmod 600 *.pem
|
||
|
|
```
|
||
|
|
|
||
|
|
## Security Notes
|
||
|
|
|
||
|
|
### SSH Keys
|
||
|
|
|
||
|
|
**DO NOT commit private keys to version control!**
|
||
|
|
|
||
|
|
The `.gitignore` file should already exclude `*.pem` files, but verify:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check that keys are ignored
|
||
|
|
git status
|
||
|
|
|
||
|
|
# If keys appear, add to .gitignore
|
||
|
|
echo "files/*.pem" >> ../.gitignore
|
||
|
|
```
|
||
|
|
|
||
|
|
### File Permissions
|
||
|
|
|
||
|
|
SSH keys must have restrictive permissions:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Set correct permissions (required)
|
||
|
|
chmod 600 *.pem
|
||
|
|
|
||
|
|
# Verify
|
||
|
|
ls -la *.pem
|
||
|
|
# Should show: -rw------- (600)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Read-Only Mounting
|
||
|
|
|
||
|
|
Files are mounted read-only into the container for security:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
volumes:
|
||
|
|
- ./files:/files:ro # :ro = read-only
|
||
|
|
```
|
||
|
|
|
||
|
|
This prevents the container from modifying your configuration files.
|
||
|
|
|
||
|
|
## Customization
|
||
|
|
|
||
|
|
### Alacritty Configuration
|
||
|
|
|
||
|
|
Edit `alacritty.toml` to customize:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
[window]
|
||
|
|
opacity = 0.95 # Transparency (0.0 - 1.0)
|
||
|
|
|
||
|
|
[font]
|
||
|
|
size = 11.0 # Font size
|
||
|
|
|
||
|
|
[colors]
|
||
|
|
# Theme is imported from catppuccin-frappe.toml
|
||
|
|
```
|
||
|
|
|
||
|
|
### socktop Profiles
|
||
|
|
|
||
|
|
Edit `profiles.json` to add/modify systems:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"profiles": {
|
||
|
|
"my-server": {
|
||
|
|
"name": "My Server",
|
||
|
|
"host": "192.168.1.100",
|
||
|
|
"port": 3000,
|
||
|
|
"auth": {
|
||
|
|
"type": "ssh_key",
|
||
|
|
"username": "user",
|
||
|
|
"key_path": "~/.config/socktop/my-server.pem"
|
||
|
|
},
|
||
|
|
"tags": ["production"],
|
||
|
|
"color": "#a6d189"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### Files Not Loading
|
||
|
|
|
||
|
|
If configuration files aren't being loaded in the container:
|
||
|
|
|
||
|
|
1. **Check files exist:**
|
||
|
|
```bash
|
||
|
|
ls -la files/
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Check container can see them:**
|
||
|
|
```bash
|
||
|
|
docker exec socktop-webterm ls -la /files
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **Check they were copied to config directories:**
|
||
|
|
```bash
|
||
|
|
docker exec socktop-webterm ls -la /home/socktop/.config/alacritty
|
||
|
|
docker exec socktop-webterm ls -la /home/socktop/.config/socktop
|
||
|
|
```
|
||
|
|
|
||
|
|
4. **Check entrypoint logs:**
|
||
|
|
```bash
|
||
|
|
docker logs socktop-webterm 2>&1 | head -50
|
||
|
|
```
|
||
|
|
|
||
|
|
### SSH Key Issues
|
||
|
|
|
||
|
|
If SSH authentication fails:
|
||
|
|
|
||
|
|
1. **Verify permissions:**
|
||
|
|
```bash
|
||
|
|
ls -la *.pem
|
||
|
|
# Should show: -rw------- (600)
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Check key format:**
|
||
|
|
```bash
|
||
|
|
head -1 rpi-master.pem
|
||
|
|
# Should show: -----BEGIN ... PRIVATE KEY-----
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **Test key manually:**
|
||
|
|
```bash
|
||
|
|
ssh -i rpi-master.pem user@host
|
||
|
|
```
|
||
|
|
|
||
|
|
### Font Not Rendering
|
||
|
|
|
||
|
|
If FiraCode Nerd Font doesn't work:
|
||
|
|
|
||
|
|
1. **Verify font name in config:**
|
||
|
|
```toml
|
||
|
|
[font]
|
||
|
|
normal = { family = "FiraCode Nerd Font Mono", style = "Regular" }
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Check font is installed in container:**
|
||
|
|
```bash
|
||
|
|
docker exec socktop-webterm fc-list | grep -i firacode
|
||
|
|
```
|
||
|
|
|
||
|
|
## Directory Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
files/
|
||
|
|
├── README.md # This file
|
||
|
|
├── alacritty.toml.example # Example Alacritty config
|
||
|
|
├── alacritty.toml # Your Alacritty config (create this)
|
||
|
|
├── catppuccin-frappe.toml.example # Example theme
|
||
|
|
├── catppuccin-frappe.toml # Your theme (create this)
|
||
|
|
├── profiles.json.example # Example profiles
|
||
|
|
├── profiles.json # Your profiles (create this)
|
||
|
|
├── rpi-master.pem # Your SSH keys (add these)
|
||
|
|
├── rpi-worker-1.pem
|
||
|
|
├── rpi-worker-2.pem
|
||
|
|
└── rpi-worker-3.pem
|
||
|
|
```
|
||
|
|
|
||
|
|
## Validation Checklist
|
||
|
|
|
||
|
|
Before running the container, verify:
|
||
|
|
|
||
|
|
- [ ] `alacritty.toml` exists and is valid TOML
|
||
|
|
- [ ] `catppuccin-frappe.toml` exists and is valid TOML
|
||
|
|
- [ ] `profiles.json` exists and is valid JSON
|
||
|
|
- [ ] All `.pem` files exist
|
||
|
|
- [ ] All `.pem` files have 600 permissions
|
||
|
|
- [ ] No `.pem` files are committed to git
|
||
|
|
- [ ] Host IPs in `profiles.json` are correct
|
||
|
|
- [ ] SSH keys match the systems in `profiles.json`
|
||
|
|
|
||
|
|
## References
|
||
|
|
|
||
|
|
- **Alacritty Config**: https://github.com/alacritty/alacritty/blob/master/alacritty.yml
|
||
|
|
- **Catppuccin Theme**: https://github.com/catppuccin/alacritty
|
||
|
|
- **socktop Docs**: https://jasonwitty.github.io/socktop/
|
||
|
|
- **Docker Docs**: See `../DOCKER_DEPLOYMENT.md`
|