apps
This commit is contained in:
parent
1ac70634bd
commit
a81f655133
@ -5,10 +5,13 @@ This directory contains all prepackaged containerized applications for Archipela
|
|||||||
## App Overview
|
## App Overview
|
||||||
|
|
||||||
### Bitcoin & Lightning
|
### Bitcoin & Lightning
|
||||||
- **bitcoin-core**: Full Bitcoin node (ports: 8332, 8333)
|
- **bitcoin-core**: Full Bitcoin node (ports: 8332, 8333) - v24.0.0
|
||||||
- **lnd**: Lightning Network Daemon (ports: 9735, 10009, 8080)
|
- **lnd**: Lightning Network Daemon (ports: 9735, 10009, 8080)
|
||||||
- **core-lightning**: Core Lightning implementation (ports: 9736, 9835)
|
- **core-lightning**: Core Lightning implementation (ports: 9736, 9835)
|
||||||
- **btcpay-server**: Bitcoin payment processor (ports: 80, 443)
|
- **lightning-stack**: Complete Lightning implementation (ports: 9737, 10010, 8087) - v0.12.0
|
||||||
|
- **btcpay-server**: Bitcoin payment processor (ports: 80, 443) - v1.12.0
|
||||||
|
- **mempool**: Blockchain explorer (port: 4080) - v2.5.0
|
||||||
|
- **fedimint**: Federated Bitcoin minting (ports: 8173, 8174) - v0.3.0
|
||||||
|
|
||||||
### Nostr Relays
|
### Nostr Relays
|
||||||
- **nostr-rs-relay**: High-performance Rust relay (port: 8081)
|
- **nostr-rs-relay**: High-performance Rust relay (port: 8081)
|
||||||
@ -18,6 +21,18 @@ This directory contains all prepackaged containerized applications for Archipela
|
|||||||
- **web5-dwn**: Decentralized Web Node (port: 3000)
|
- **web5-dwn**: Decentralized Web Node (port: 3000)
|
||||||
- **did-wallet**: Web5 DID Wallet (port: 8083)
|
- **did-wallet**: Web5 DID Wallet (port: 8083)
|
||||||
|
|
||||||
|
### Self-Hosted Services
|
||||||
|
- **home-assistant**: Home automation (port: 8123) - v2024.1.0
|
||||||
|
- **grafana**: Monitoring and dashboards (port: 3001) - v10.2.0
|
||||||
|
- **ollama**: Local AI models (port: 11434) - v0.1.0
|
||||||
|
- **searxng**: Privacy search engine (port: 8888) - v2024.1.0
|
||||||
|
- **onlyoffice**: Office suite (port: 8088) - v7.5.0
|
||||||
|
- **penpot**: Design platform (port: 8089) - v2.0.0
|
||||||
|
|
||||||
|
### Custom Applications
|
||||||
|
- **endurain**: Application platform (port: 8085) - v1.0.0
|
||||||
|
- **morphos-server**: MorphOS server (port: 8086) - v1.0.0
|
||||||
|
|
||||||
### Mesh Networking
|
### Mesh Networking
|
||||||
- **router**: Mesh routing and network management (ports: 8084, 5353, 1900)
|
- **router**: Mesh routing and network management (ports: 8084, 5353, 1900)
|
||||||
- **meshtastic**: LoRa mesh networking (ports: 4403, 1883)
|
- **meshtastic**: LoRa mesh networking (ports: 4403, 1883)
|
||||||
@ -26,18 +41,16 @@ This directory contains all prepackaged containerized applications for Archipela
|
|||||||
|
|
||||||
All apps use unique base ports. In development mode, ports are offset by 10000 (configurable).
|
All apps use unique base ports. In development mode, ports are offset by 10000 (configurable).
|
||||||
|
|
||||||
| App | Base Ports | Dev Ports (offset +10000) |
|
See [PORTS.md](./PORTS.md) for complete port mapping.
|
||||||
|-----|------------|---------------------------|
|
|
||||||
| bitcoin-core | 8332, 8333 | 18332, 18333 |
|
Key apps:
|
||||||
| lnd | 9735, 10009, 8080 | 19735, 20009, 18080 |
|
- **bitcoin-core**: 8332, 8333 → 18332, 18333
|
||||||
| core-lightning | 9736, 9835 | 19736, 19835 |
|
- **btcpay-server**: 80, 443 → 10080, 10443
|
||||||
| btcpay-server | 80, 443 | 10080, 10443 |
|
- **home-assistant**: 8123 → 18123
|
||||||
| nostr-rs-relay | 8081 | 18081 |
|
- **grafana**: 3001 → 13001
|
||||||
| strfry | 8082 | 18082 |
|
- **mempool**: 4080 → 14080
|
||||||
| did-wallet | 8083 | 18083 |
|
- **ollama**: 11434 → 21434
|
||||||
| router | 8084, 5353, 1900 | 18084, 15353, 11900 |
|
- **lightning-stack**: 9737, 10010, 8087 → 19737, 20010, 18087
|
||||||
| web5-dwn | 3000 | 13000 |
|
|
||||||
| meshtastic | 4403, 1883 | 14403, 11883 |
|
|
||||||
|
|
||||||
## Building Apps
|
## Building Apps
|
||||||
|
|
||||||
|
|||||||
@ -4,35 +4,59 @@ This document lists all port assignments for Archipelago apps.
|
|||||||
|
|
||||||
## Production Ports
|
## Production Ports
|
||||||
|
|
||||||
| App | Port(s) | Protocol | Service |
|
| App | Port(s) | Protocol | Service | Dev Port(s) |
|
||||||
|-----|---------|----------|---------|
|
|-----|---------|----------|---------|-------------|
|
||||||
| bitcoin-core | 8332, 8333 | TCP | RPC, P2P |
|
| bitcoin-core | 8332, 8333 | TCP | RPC, P2P | 18332, 18333 |
|
||||||
| lnd | 9735, 10009, 8080 | TCP | P2P, gRPC, REST |
|
| btcpay-server | 80, 443 | TCP | HTTP, HTTPS | 10080, 10443 |
|
||||||
| core-lightning | 9736, 9835 | TCP | P2P, gRPC |
|
| home-assistant | 8123 | TCP | Web UI | 18123 |
|
||||||
| btcpay-server | 80, 443 | TCP | HTTP, HTTPS |
|
| grafana | 3001 | TCP | Web UI | 13001 |
|
||||||
| nostr-rs-relay | 8081 | TCP | HTTP/WebSocket |
|
| endurain | 8085 | TCP | Web UI | 18085 |
|
||||||
| strfry | 8082 | TCP | HTTP/WebSocket |
|
| fedimint | 8173, 8174 | TCP | API, Web UI | 18173, 18174 |
|
||||||
| did-wallet | 8083 | TCP | Web UI |
|
| morphos-server | 8086 | TCP | Web UI | 18086 |
|
||||||
| router | 8084, 5353, 1900 | TCP/UDP | Web UI, mDNS, SSDP |
|
| lightning-stack | 9737, 10010, 8087 | TCP | P2P, gRPC, REST | 19737, 20010, 18087 |
|
||||||
| web5-dwn | 3000 | TCP | HTTP API |
|
| mempool | 4080 | TCP | Web UI | 14080 |
|
||||||
| meshtastic | 4403, 1883 | TCP | HTTP API, MQTT |
|
| ollama | 11434 | TCP | API | 21434 |
|
||||||
|
| searxng | 8888 | TCP | Web UI | 18888 |
|
||||||
|
| onlyoffice | 8088 | TCP | Web UI | 18088 |
|
||||||
|
| penpot | 8089 | TCP | Web UI | 18089 |
|
||||||
|
| lnd | 9735, 10009, 8080 | TCP | P2P, gRPC, REST | 19735, 20009, 18080 |
|
||||||
|
| core-lightning | 9736, 9835 | TCP | P2P, gRPC | 19736, 19835 |
|
||||||
|
| nostr-rs-relay | 8081 | TCP | HTTP/WebSocket | 18081 |
|
||||||
|
| strfry | 8082 | TCP | HTTP/WebSocket | 18082 |
|
||||||
|
| did-wallet | 8083 | TCP | Web UI | 18083 |
|
||||||
|
| router | 8084, 5353, 1900 | TCP/UDP | Web UI, mDNS, SSDP | 18084, 15353, 11900 |
|
||||||
|
| web5-dwn | 3000 | TCP | HTTP API | 13000 |
|
||||||
|
| meshtastic | 4403, 1883 | TCP | HTTP API, MQTT | 14403, 11883 |
|
||||||
|
|
||||||
## Development Ports (Offset: +10000)
|
## Development Ports (Offset: +10000)
|
||||||
|
|
||||||
In development mode, all ports are offset by 10000 to avoid conflicts with production services.
|
In development mode, all ports are offset by 10000 to avoid conflicts with production services.
|
||||||
|
|
||||||
| App | Dev Port(s) | Access URL |
|
### Quick Access URLs (Development)
|
||||||
|-----|-------------|------------|
|
|
||||||
| bitcoin-core | 18332, 18333 | http://localhost:18332 |
|
| App | Dev URL |
|
||||||
| lnd | 19735, 20009, 18080 | http://localhost:18080 |
|
|-----|----------|
|
||||||
| core-lightning | 19736, 19835 | http://localhost:19835 |
|
| Bitcoin Core RPC | http://localhost:18332 |
|
||||||
| btcpay-server | 10080, 10443 | http://localhost:10080 |
|
| BTCPay Server | http://localhost:10080 |
|
||||||
| nostr-rs-relay | 18081 | http://localhost:18081 |
|
| Home Assistant | http://localhost:18123 |
|
||||||
| strfry | 18082 | http://localhost:18082 |
|
| Grafana | http://localhost:13001 |
|
||||||
| did-wallet | 18083 | http://localhost:18083 |
|
| Endurain | http://localhost:18085 |
|
||||||
| router | 18084, 15353, 11900 | http://localhost:18084 |
|
| Fedimint | http://localhost:18174 |
|
||||||
| web5-dwn | 13000 | http://localhost:13000 |
|
| MorphOS Server | http://localhost:18086 |
|
||||||
| meshtastic | 14403, 11883 | http://localhost:14403 |
|
| Lightning Stack | http://localhost:18087 |
|
||||||
|
| Mempool | http://localhost:14080 |
|
||||||
|
| Ollama | http://localhost:21434 |
|
||||||
|
| SearXNG | http://localhost:18888 |
|
||||||
|
| OnlyOffice | http://localhost:18088 |
|
||||||
|
| Penpot | http://localhost:18089 |
|
||||||
|
| LND REST | http://localhost:18080 |
|
||||||
|
| Core Lightning | http://localhost:19835 |
|
||||||
|
| Nostr RS Relay | http://localhost:18081 |
|
||||||
|
| Strfry | http://localhost:18082 |
|
||||||
|
| DID Wallet | http://localhost:18083 |
|
||||||
|
| Router | http://localhost:18084 |
|
||||||
|
| Web5 DWN | http://localhost:13000 |
|
||||||
|
| Meshtastic | http://localhost:14403 |
|
||||||
|
|
||||||
## Port Conflict Resolution
|
## Port Conflict Resolution
|
||||||
|
|
||||||
@ -55,3 +79,10 @@ Or in the Archipelago config:
|
|||||||
[dev]
|
[dev]
|
||||||
port_offset = 10000
|
port_offset = 10000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Port Ranges
|
||||||
|
|
||||||
|
- **Bitcoin/Lightning**: 8000-10000 range
|
||||||
|
- **Web Services**: 3000-9000 range
|
||||||
|
- **System Services**: 10000+ range
|
||||||
|
- **Custom Apps**: 8000-9000 range
|
||||||
|
|||||||
@ -5,11 +5,13 @@ This directory contains app manifest definitions for containerized applications
|
|||||||
## App Categories
|
## App Categories
|
||||||
|
|
||||||
### Bitcoin & Lightning
|
### Bitcoin & Lightning
|
||||||
- `bitcoin-core/` - Bitcoin Core full node
|
- `bitcoin-core/` - Bitcoin Core full node (v24.0.0)
|
||||||
- `lnd/` - Lightning Network Daemon
|
- `lnd/` - Lightning Network Daemon
|
||||||
- `core-lightning/` - Core Lightning (CLN)
|
- `core-lightning/` - Core Lightning (CLN)
|
||||||
- `btcpay-server/` - BTCPay Server payment processor
|
- `lightning-stack/` - Complete Lightning implementation (v0.12.0)
|
||||||
- `mempool/` - Mempool blockchain explorer
|
- `btcpay-server/` - BTCPay Server payment processor (v1.12.0)
|
||||||
|
- `mempool/` - Mempool blockchain explorer (v2.5.0)
|
||||||
|
- `fedimint/` - Federated Bitcoin minting (v0.3.0)
|
||||||
|
|
||||||
### Web5 & Decentralized Protocols
|
### Web5 & Decentralized Protocols
|
||||||
- `nostr-rs-relay/` - High-performance Nostr relay (Rust)
|
- `nostr-rs-relay/` - High-performance Nostr relay (Rust)
|
||||||
@ -17,23 +19,21 @@ This directory contains app manifest definitions for containerized applications
|
|||||||
- `web5-dwn/` - Decentralized Web Node
|
- `web5-dwn/` - Decentralized Web Node
|
||||||
- `did-wallet/` - Web5 wallet with DID support
|
- `did-wallet/` - Web5 wallet with DID support
|
||||||
|
|
||||||
|
### Self-Hosted Services
|
||||||
|
- `home-assistant/` - Home automation (v2024.1.0)
|
||||||
|
- `grafana/` - Monitoring and dashboards (v10.2.0)
|
||||||
|
- `ollama/` - Local AI models (v0.1.0)
|
||||||
|
- `searxng/` - Privacy-respecting search engine (v2024.1.0)
|
||||||
|
- `onlyoffice/` - Office suite (v7.5.0)
|
||||||
|
- `penpot/` - Design platform (v2.0.0)
|
||||||
|
|
||||||
|
### Custom Applications
|
||||||
|
- `endurain/` - Endurain application platform (v1.0.0)
|
||||||
|
- `morphos-server/` - MorphOS server (v1.0.0)
|
||||||
|
|
||||||
### Mesh Networking & Routing
|
### Mesh Networking & Routing
|
||||||
- `meshtastic/` - Meshtastic LoRa mesh networking
|
- `meshtastic/` - Meshtastic LoRa mesh networking
|
||||||
- `router/` - Mesh routing and local network management
|
- `router/` - Mesh routing and local network management
|
||||||
- `cjdns/` - Encrypted mesh networking (cjdns)
|
|
||||||
|
|
||||||
### Self-Hosted Services
|
|
||||||
- `homeassistant/` - Home automation
|
|
||||||
- `grafana/` - Monitoring and dashboards
|
|
||||||
- `searxng/` - Privacy-respecting search engine
|
|
||||||
- `onlyoffice/` - Office suite
|
|
||||||
- `ollama/` - Local AI models
|
|
||||||
- `penpot/` - Design tool
|
|
||||||
|
|
||||||
### Other
|
|
||||||
- `fedimint/` - Federated e-cash mint
|
|
||||||
- `morphos-server/` - MorphOS server
|
|
||||||
- `a-b/` - A to B protocol
|
|
||||||
|
|
||||||
## Manifest Format
|
## Manifest Format
|
||||||
|
|
||||||
@ -46,3 +46,25 @@ Each app has a `manifest.yml` file defining:
|
|||||||
- Network configuration
|
- Network configuration
|
||||||
|
|
||||||
See `docs/app-manifest-spec.md` for the complete specification.
|
See `docs/app-manifest-spec.md` for the complete specification.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### Build All Apps
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build Specific App
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh <app-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Development
|
||||||
|
|
||||||
|
See [DEVELOPMENT.md](./DEVELOPMENT.md) for development guide and [QUICKSTART.md](./QUICKSTART.md) for quick start instructions.
|
||||||
|
|
||||||
|
## Port Assignments
|
||||||
|
|
||||||
|
See [PORTS.md](./PORTS.md) for complete port mapping. All apps use unique ports and are automatically offset in development mode.
|
||||||
|
|||||||
5
apps/ollama/Dockerfile
Normal file
5
apps/ollama/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Ollama - uses official image
|
||||||
|
FROM ollama/ollama:latest
|
||||||
|
|
||||||
|
# Default configuration is in the image
|
||||||
|
# No additional setup needed
|
||||||
47
apps/ollama/manifest.yml
Normal file
47
apps/ollama/manifest.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
app:
|
||||||
|
id: ollama
|
||||||
|
name: Ollama
|
||||||
|
version: 0.1.0
|
||||||
|
description: Run large language models locally. Privacy-preserving AI on your node.
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: ollama/ollama:latest
|
||||||
|
image_signature: cosign://...
|
||||||
|
pull_policy: if-not-present
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- storage: 50Gi # Models can be large
|
||||||
|
|
||||||
|
resources:
|
||||||
|
cpu_limit: 4
|
||||||
|
memory_limit: 8Gi # LLMs need lots of RAM
|
||||||
|
disk_limit: 50Gi
|
||||||
|
|
||||||
|
security:
|
||||||
|
capabilities: []
|
||||||
|
readonly_root: false # Ollama needs write access for models
|
||||||
|
network_policy: isolated
|
||||||
|
apparmor_profile: ollama
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- host: 11434
|
||||||
|
container: 11434
|
||||||
|
protocol: tcp # API
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /var/lib/archipelago/ollama
|
||||||
|
target: /root/.ollama
|
||||||
|
options: [rw]
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- OLLAMA_HOST=0.0.0.0:11434
|
||||||
|
- OLLAMA_KEEP_ALIVE=24h
|
||||||
|
|
||||||
|
health_check:
|
||||||
|
type: http
|
||||||
|
endpoint: http://localhost:11434
|
||||||
|
path: /api/tags
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
5
apps/onlyoffice/Dockerfile
Normal file
5
apps/onlyoffice/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# OnlyOffice - uses official image
|
||||||
|
FROM onlyoffice/documentserver:7.5.0
|
||||||
|
|
||||||
|
# Default configuration is in the image
|
||||||
|
# No additional setup needed
|
||||||
47
apps/onlyoffice/manifest.yml
Normal file
47
apps/onlyoffice/manifest.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
app:
|
||||||
|
id: onlyoffice
|
||||||
|
name: OnlyOffice
|
||||||
|
version: 7.5.0
|
||||||
|
description: Office suite and document collaboration. Edit documents, spreadsheets, and presentations.
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: onlyoffice/documentserver:7.5.0
|
||||||
|
image_signature: cosign://...
|
||||||
|
pull_policy: if-not-present
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- storage: 10Gi
|
||||||
|
|
||||||
|
resources:
|
||||||
|
cpu_limit: 4
|
||||||
|
memory_limit: 4Gi
|
||||||
|
disk_limit: 10Gi
|
||||||
|
|
||||||
|
security:
|
||||||
|
capabilities: []
|
||||||
|
readonly_root: false # OnlyOffice needs write access
|
||||||
|
network_policy: isolated
|
||||||
|
apparmor_profile: onlyoffice
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- host: 8088
|
||||||
|
container: 80
|
||||||
|
protocol: tcp # Web UI
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /var/lib/archipelago/onlyoffice
|
||||||
|
target: /var/www/onlyoffice/Data
|
||||||
|
options: [rw]
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- JWT_ENABLED=false
|
||||||
|
- JWT_SECRET=${ONLYOFFICE_JWT_SECRET}
|
||||||
|
|
||||||
|
health_check:
|
||||||
|
type: http
|
||||||
|
endpoint: http://localhost:8088
|
||||||
|
path: /healthcheck
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
5
apps/penpot/Dockerfile
Normal file
5
apps/penpot/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Penpot - uses official image
|
||||||
|
FROM penpot/penpot:latest
|
||||||
|
|
||||||
|
# Default configuration is in the image
|
||||||
|
# No additional setup needed
|
||||||
48
apps/penpot/manifest.yml
Normal file
48
apps/penpot/manifest.yml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
app:
|
||||||
|
id: penpot
|
||||||
|
name: Penpot
|
||||||
|
version: 2.0.0
|
||||||
|
description: Open-source design and prototyping platform. Design tools for teams.
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: penpot/penpot:latest
|
||||||
|
image_signature: cosign://...
|
||||||
|
pull_policy: if-not-present
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- storage: 10Gi
|
||||||
|
|
||||||
|
resources:
|
||||||
|
cpu_limit: 4
|
||||||
|
memory_limit: 4Gi
|
||||||
|
disk_limit: 10Gi
|
||||||
|
|
||||||
|
security:
|
||||||
|
capabilities: []
|
||||||
|
readonly_root: true
|
||||||
|
network_policy: isolated
|
||||||
|
apparmor_profile: penpot
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- host: 8089
|
||||||
|
container: 80
|
||||||
|
protocol: tcp # Web UI
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /var/lib/archipelago/penpot
|
||||||
|
target: /app/data
|
||||||
|
options: [rw]
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- PENPOT_PUBLIC_URI=http://localhost:8089
|
||||||
|
- PENPOT_DATABASE_URI=postgresql://penpot:penpot@penpot-db:5432/penpot
|
||||||
|
- PENPOT_REDIS_URI=redis://penpot-redis:6379
|
||||||
|
|
||||||
|
health_check:
|
||||||
|
type: http
|
||||||
|
endpoint: http://localhost:8089
|
||||||
|
path: /api/health
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
5
apps/searxng/Dockerfile
Normal file
5
apps/searxng/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# SearXNG - uses official image
|
||||||
|
FROM searxng/searxng:2024.1.0
|
||||||
|
|
||||||
|
# Default configuration is in the image
|
||||||
|
# No additional setup needed
|
||||||
47
apps/searxng/manifest.yml
Normal file
47
apps/searxng/manifest.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
app:
|
||||||
|
id: searxng
|
||||||
|
name: SearXNG
|
||||||
|
version: 2024.1.0
|
||||||
|
description: Privacy-respecting metasearch engine. Search the web without tracking.
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: searxng/searxng:2024.1.0
|
||||||
|
image_signature: cosign://...
|
||||||
|
pull_policy: if-not-present
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- storage: 2Gi
|
||||||
|
|
||||||
|
resources:
|
||||||
|
cpu_limit: 2
|
||||||
|
memory_limit: 1Gi
|
||||||
|
disk_limit: 2Gi
|
||||||
|
|
||||||
|
security:
|
||||||
|
capabilities: []
|
||||||
|
readonly_root: true
|
||||||
|
network_policy: isolated
|
||||||
|
apparmor_profile: searxng
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- host: 8888
|
||||||
|
container: 8080
|
||||||
|
protocol: tcp # Web UI
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /var/lib/archipelago/searxng
|
||||||
|
target: /etc/searxng
|
||||||
|
options: [rw]
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- SEARXNG_HOSTNAME=localhost
|
||||||
|
- SEARXNG_BIND_ADDRESS=0.0.0.0:8080
|
||||||
|
|
||||||
|
health_check:
|
||||||
|
type: http
|
||||||
|
endpoint: http://localhost:8888
|
||||||
|
path: /
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
@ -24,19 +24,18 @@ impl ApiHandler {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn handle_request<B>(&self, req: Request<B>) -> Result<Response<Full<Bytes>>>
|
pub async fn handle_request(
|
||||||
where
|
&self,
|
||||||
B: http_body::Body<Data = Bytes> + Send + 'static,
|
req: Request<http_body_util::Incoming>,
|
||||||
B::Error: std::fmt::Display,
|
) -> Result<Response<Full<Bytes>>> {
|
||||||
{
|
// Extract path and method before consuming req
|
||||||
let path = req.uri().path();
|
let path = req.uri().path().to_string();
|
||||||
let method = req.method();
|
let method = req.method().clone();
|
||||||
|
|
||||||
// Convert Incoming body to bytes using http_body_util::BodyExt
|
// Convert body to bytes using http_body_util::BodyExt
|
||||||
let (parts, body) = req.into_parts();
|
let (parts, body) = req.into_parts();
|
||||||
// hyper::body::Incoming implements http_body::Body, and BodyExt extends it
|
|
||||||
use http_body_util::BodyExt;
|
use http_body_util::BodyExt;
|
||||||
let collected = body.collect().await
|
let collected: http_body_util::Collected<Bytes> = body.collect().await
|
||||||
.map_err(|_e| anyhow::anyhow!("Failed to read body"))?;
|
.map_err(|_e| anyhow::anyhow!("Failed to read body"))?;
|
||||||
let body_bytes = collected.to_bytes();
|
let body_bytes = collected.to_bytes();
|
||||||
|
|
||||||
@ -47,10 +46,10 @@ impl ApiHandler {
|
|||||||
|
|
||||||
// Route requests
|
// Route requests
|
||||||
match (method, path.as_str()) {
|
match (method, path.as_str()) {
|
||||||
(&Method::POST, "/rpc/v1") => {
|
(Method::POST, "/rpc/v1") => {
|
||||||
self.rpc_handler.handle(req_with_bytes).await
|
self.rpc_handler.handle(req_with_bytes).await
|
||||||
}
|
}
|
||||||
(&Method::GET, "/health") => {
|
(Method::GET, "/health") => {
|
||||||
Ok(Response::builder()
|
Ok(Response::builder()
|
||||||
.status(StatusCode::OK)
|
.status(StatusCode::OK)
|
||||||
.body(Full::new(Bytes::from("OK")))
|
.body(Full::new(Bytes::from("OK")))
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:84}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:84}, _>, TokioExecutor>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>: hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>
|
||||||
|
hyper_util::server::conn::auto::Connection<'_, TokioIo<tokio::net::TcpStream>, hyper::service::util::ServiceFn<{closure@archipelago/src/server.rs:43:42: 43:52}, _>, TokioExecutor>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user