Update README to use Caddy instead of nginx
Replace nginx reverse proxy configuration with Caddy configuration. Caddy provides automatic SSL certificates and simpler configuration. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
d87afd1548
commit
dbe9e90942
1 changed files with 158 additions and 0 deletions
158
README.md
Normal file
158
README.md
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
# No as a Service (NaaS)
|
||||
|
||||
A lightweight, production-ready HTTP service that always says "no" in various formats.
|
||||
|
||||
## Features
|
||||
|
||||
- Minimal dependencies (pure Rust, standard library only)
|
||||
- Multiple response formats (text, JSON, XML, YAML, boolean)
|
||||
- Mobile-responsive web frontend
|
||||
- CORS support
|
||||
- Health check endpoint
|
||||
- Optimized for small binary size (~1MB)
|
||||
- Container-ready with health checks
|
||||
|
||||
## API Endpoints
|
||||
|
||||
- `GET /` - Web frontend
|
||||
- `GET /api/no` - Returns plain text "no"
|
||||
- `GET /api/no?format=json` - Returns `{"answer": "no"}`
|
||||
- `GET /api/no?format=bool` - Returns `false`
|
||||
- `GET /api/no?format=xml` - Returns XML response
|
||||
- `GET /api/no?format=yaml` - Returns YAML response
|
||||
- `GET /health` - Health check endpoint
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Local Development
|
||||
|
||||
```bash
|
||||
# Build and run locally
|
||||
cd naas
|
||||
cargo build --release
|
||||
PORT=8080 ./target/release/naas
|
||||
```
|
||||
|
||||
Visit http://localhost:8080
|
||||
|
||||
### Container Deployment with Podman
|
||||
|
||||
```bash
|
||||
# Build container
|
||||
cd naas
|
||||
BUILDAH_FORMAT=docker podman build -t naas:latest -f Containerfile .
|
||||
|
||||
# Run container
|
||||
podman run -d \
|
||||
--name naas \
|
||||
-p 8080:8080 \
|
||||
--restart=always \
|
||||
naas:latest
|
||||
|
||||
# Check health
|
||||
curl http://localhost:8080/health
|
||||
```
|
||||
|
||||
### Systemd Service Deployment
|
||||
|
||||
1. **Setup user and directory:**
|
||||
```bash
|
||||
# Create service user
|
||||
sudo useradd -r -s /bin/false naas
|
||||
|
||||
# Copy application files
|
||||
sudo mkdir -p /opt/naas
|
||||
sudo cp -r naas/* /opt/naas/
|
||||
sudo chown -R naas:naas /opt/naas
|
||||
```
|
||||
|
||||
2. **Install systemd service:**
|
||||
```bash
|
||||
# Copy service file
|
||||
sudo cp naas/naas.service /etc/systemd/system/
|
||||
|
||||
# Reload systemd and start service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable naas
|
||||
sudo systemctl start naas
|
||||
|
||||
# Check status
|
||||
sudo systemctl status naas
|
||||
```
|
||||
|
||||
3. **View logs:**
|
||||
```bash
|
||||
sudo journalctl -u naas -f
|
||||
```
|
||||
|
||||
## Production Deployment to no.donothireus.com
|
||||
|
||||
### Caddy Reverse Proxy Configuration
|
||||
|
||||
```caddyfile
|
||||
no.donothireus.com {
|
||||
reverse_proxy localhost:8080 {
|
||||
header_up Host {host}
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-For {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Full Production Setup
|
||||
|
||||
1. **Deploy application** using systemd service (see above)
|
||||
|
||||
2. **Configure Caddy** with the above Caddyfile configuration (SSL certificates are automatic with Caddy)
|
||||
|
||||
3. **Restart services:**
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
sudo systemctl restart naas
|
||||
```
|
||||
|
||||
## Performance
|
||||
|
||||
- Binary size: ~1MB (release build with optimizations)
|
||||
- Memory usage: <10MB
|
||||
- Startup time: <100ms
|
||||
- Request latency: <1ms
|
||||
|
||||
## Development
|
||||
|
||||
### Building from Source
|
||||
|
||||
```bash
|
||||
# Debug build
|
||||
cargo build
|
||||
|
||||
# Release build with optimizations
|
||||
cargo build --release
|
||||
|
||||
# Run tests
|
||||
cargo test
|
||||
```
|
||||
|
||||
### Container Build Options
|
||||
|
||||
```bash
|
||||
# Multi-platform build (if needed)
|
||||
podman build --platform linux/amd64,linux/arm64 -t naas:latest .
|
||||
|
||||
# Build with specific Rust version
|
||||
podman build --build-arg RUST_VERSION=1.75 -t naas:latest .
|
||||
```
|
||||
|
||||
## Security
|
||||
|
||||
- Runs as non-root user (UID 1000)
|
||||
- Read-only container filesystem
|
||||
- No new privileges
|
||||
- All capabilities dropped except NET_BIND_SERVICE
|
||||
- Memory and CPU limits enforced
|
||||
- CORS headers properly configured
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Loading…
Add table
Add a link
Reference in a new issue