Files
api/README.md
Kieran c432f603ec
All checks were successful
continuous-integration/drone/push Build is passing
feat: nostr domain hosting
2025-04-03 12:56:20 +01:00

126 lines
2.8 KiB
Markdown

## LNVPS
A bitcoin powered VPS system.
## Features
- MySQL database
- Payments:
- Bitcoin:
- LND
- [Bitvora](https://bitvora.com?r=lnvps)
- Fiat:
- [RevolutPay](https://www.revolut.com/business/revolut-pay/)
- VM Backend:
- Proxmox
- LibVirt (WIP)
- Network Resources:
- Mikrotik JSON-API
- OVH API (dedicated server virtual mac)
- DNS Resources:
- Cloudflare API
## Required Config
```yaml
# MySql database connection string
db: "mysql://root:root@localhost:3376/lnvps"
# LN node connection details (Only 1 allowed)
lightning:
lnd:
url: "https://127.0.0.1:10003"
cert: "$HOME/.lnd/tls.cert"
macaroon: "$HOME/.lnd/data/chain/bitcoin/mainnet/admin.macaroon"
#bitvora:
# token: "my-api-token"
# webhook-secret: "my-webhook-secret"
# Number of days after a VM expires to delete
delete-after: 3
# Read-only mode prevents spawning VM's
read-only: false
# Provisioner is the main process which handles creating/deleting VM's
provisioner:
proxmox:
# QEMU settings used for spawning VM's
qemu:
bios: "ovmf"
machine: "q35"
os-type: "l26"
bridge: "vmbr0"
cpu: "kvm64"
kvm: false
libvirt:
# QEMU settings used for spawning VM's
qemu:
bios: "ovmf"
machine: "q35"
os-type: "l26"
bridge: "vmbr0"
cpu: "kvm64"
kvm: false
```
### Email notifications
Email notifications can be enabled, this is primarily intended for admin notifications.
```yaml
# (Optional)
# Email notifications settings
smtp:
# Admin user id, used to send notifications of failed jobs etc. (optional)
admin: 1
# SMTP server url
server: "smtp.gmail.com"
# From header used in the email (optional)
from: "LNVPS <no-reply@example.com>"
username: "no-reply@example.com"
password: "mypassword123"
```
### Nostr notifications (NIP-17)
```yaml
# (Optional)
# Nostr connection settings for notifications
nostr:
# Nostr relays to publish notifications to
relays:
- "wss://relay.snort.social"
- "wss://relay.damus.io"
- "wss://nos.lol"
# Private key used to sign notifications
nsec: "nsec1234xxx"
```
### Network Setup (Advanced)
**TODO:** AccessPolicy is now managed in the database
### DNS (PTR/A/AAAA)
To create PTR records automatically use the following config:
```yaml
dns:
# The zone where forward (A/AAAA) entries are added (eg. lnvps.cloud zone)
# We create forward entries with the format vm-<vmid>.lnvps.cloud
forward-zone-id: "my-forward-zone-id"
api:
cloudflare:
# API token to add/remove DNS records to this zone
token: "my-api-token"
```
### Taxes
To charge taxes add the following config, the values are percentage whole numbers:
```yaml
tax-rate:
IE: 23
US: 15
```
Taxes are charged based on the users specified country