Skip to content

Commit b194d40

Browse files
committed
refactor(install): simplify permissions and service setup
1 parent 47b2222 commit b194d40

6 files changed

Lines changed: 53 additions & 115 deletions

File tree

INSTALL.md

Lines changed: 51 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,63 @@
11
# Installation Guide
22

3-
## Install Dependencies
3+
## Automated Installation
4+
5+
```bash
6+
sudo ./install.sh
7+
```
8+
9+
This will:
10+
11+
- Install system dependencies
12+
- Clone repository to `/opt/relaysms/relaysms-vault`
13+
- Setup Python virtualenv
14+
- Compile gRPC protos
15+
- Download platform configurations
16+
- Generate security keys
17+
- Install and enable systemd services
18+
19+
## Manual Installation
20+
21+
### Install Dependencies
422

523
```bash
624
sudo apt update
725
sudo apt install -y python3 python3-pip python3-venv python3-dev \
8-
libmysqlclient-dev git curl make openssl gettext-base
26+
libmysqlclient-dev git curl make openssl
927
```
1028

11-
## Clone Repository
29+
### Clone Repository
1230

1331
```bash
14-
sudo mkdir -p /opt/relaysms
1532
sudo git clone https://github.com/smswithoutborders/RelaySMS-Vault.git \
1633
/opt/relaysms/relaysms-vault
1734
cd /opt/relaysms/relaysms-vault
18-
sudo chown -R $USER:$USER /opt/relaysms/relaysms-vault
1935
```
2036

21-
## Setup Python Environment
37+
### Setup Python Environment
2238

2339
```bash
2440
python3 -m venv venv
2541
venv/bin/pip install --upgrade pip
2642
venv/bin/pip install -r requirements.txt
2743
```
2844

29-
## Build Application
45+
### Build Application
3046

3147
```bash
32-
source venv/bin/activate && make grpc-compile
33-
source venv/bin/activate && make download-platforms
48+
source venv/bin/activate
49+
make grpc-compile
50+
make download-platforms
3451
```
3552

36-
## Configure Environment
53+
### Configure Environment
3754

3855
```bash
3956
cp template.env .env
40-
# Edit .env as needed
4157
vim .env
4258
```
4359

44-
## Generate Security Keys
60+
### Generate Security Keys
4561

4662
```bash
4763
mkdir -p keys
@@ -51,119 +67,55 @@ openssl rand -base64 32 > keys/pepper.key
5167
openssl rand -base64 32 > keys/signing.key
5268
chmod 700 keys
5369
chmod 600 keys/*.key
70+
chmod 600 .env
5471
```
5572

56-
## Create Data Directory
73+
### Initialize Runtime
5774

5875
```bash
5976
mkdir -p data
60-
```
61-
62-
## Runtime Setup
63-
64-
```bash
65-
venv/bin/activate && set -a && source .env && set +a && make runtime-setup
77+
set -a && source .env && set +a
78+
make runtime-setup
6679
```
6780

6881
### Install Services
6982

7083
```bash
71-
# Substitute user and group in service files
72-
export USER=$USER
73-
export GROUP=$(id -gn)
74-
for service in relaysms-vault.target relaysms-vault-rest.service relaysms-vault-grpc.service relaysms-vault-grpc-internal.service; do
75-
envsubst < $service | sudo tee /etc/systemd/system/$service > /dev/null
76-
done
84+
sudo cp relaysms-vault.target relaysms-vault-*.service /etc/systemd/system/
7785
sudo systemctl daemon-reload
7886
sudo systemctl enable relaysms-vault.target
7987
```
8088

81-
### Set Permissions
82-
83-
```bash
84-
sudo chown -R $USER:$USER /opt/relaysms/relaysms-vault
85-
chmod -R 750 /opt/relaysms/relaysms-vault
86-
chmod 700 /opt/relaysms/relaysms-vault/keys
87-
chmod 600 /opt/relaysms/relaysms-vault/keys/*.key
88-
chmod 600 /opt/relaysms/relaysms-vault/.env
89-
```
90-
91-
### Start Services
89+
## Service Management
9290

9391
```bash
94-
sudo systemctl start relaysms-vault.target
92+
./manage.sh start # Start all services
93+
./manage.sh stop # Stop all services
94+
./manage.sh restart # Restart all services
95+
./manage.sh status # Check status
96+
./manage.sh logs # View logs
97+
./manage.sh enable # Enable on boot
98+
./manage.sh disable # Disable on boot
99+
./manage.sh update # Update installation
100+
./manage.sh uninstall # Remove installation
95101
```
96102

97-
## Service Architecture
98-
99-
- `relaysms-vault.target` - Main coordination target
100-
- `relaysms-vault-rest.service` - REST API (port 19000)
101-
- `relaysms-vault-grpc.service` - gRPC server (port 8000)
102-
- `relaysms-vault-grpc-internal.service` - Internal gRPC (port 8443)
103-
104103
## Configuration
105104

106105
Edit `/opt/relaysms/relaysms-vault/.env`:
107106

108-
```bash
109-
# Bind to localhost for reverse proxy, 0.0.0.0 for direct access
110-
HOST=127.0.0.1
111-
PORT=19000
112-
113-
# Database (SQLite default, stored in data/ directory)
114-
SQLITE_DATABASE_PATH=data/vault.db
115-
116-
# Keystore (cryptographic keys stored in data/ directory)
117-
KEYSTORE_PATH=data/keystore
118-
STATIC_X25519_KEYSTORE_PATH=data/keystore/static_x25519
119-
120-
# Or use MySQL
121-
MYSQL_HOST=127.0.0.1
122-
MYSQL_USER=vault_user
123-
MYSQL_PASSWORD=secure_password
124-
MYSQL_DATABASE=relaysms_vault
125-
```
126-
127-
## Service Management
128-
129-
```bash
130-
# Using manage.sh
131-
./manage.sh start|stop|restart|status|logs|enable|disable
132-
133-
# Direct systemd
134-
sudo systemctl start relaysms-vault.target
135-
sudo systemctl status relaysms-vault.target
136-
journalctl -u 'relaysms-vault*' -f
137-
```
138-
139-
## Update
140-
141-
```bash
142-
sudo systemctl stop relaysms-vault.target
143-
cd /opt/relaysms/relaysms-vault
144-
git pull
145-
venv/bin/pip install -r requirements.txt
146-
source venv/bin/activate && make grpc-compile
147-
sudo systemctl start relaysms-vault.target
148-
```
149-
150-
## Uninstall
107+
## Services
151108

152-
```bash
153-
sudo systemctl stop relaysms-vault.target
154-
sudo systemctl disable relaysms-vault.target
155-
sudo rm /etc/systemd/system/relaysms-vault*.{service,target}
156-
sudo systemctl daemon-reload
157-
sudo rm -rf /opt/relaysms/relaysms-vault
158-
```
109+
- `relaysms-vault-rest.service` - REST API (default port 19000)
110+
- `relaysms-vault-grpc.service` - gRPC server (port 8000)
111+
- `relaysms-vault-grpc-internal.service` - Internal gRPC (port 8443)
112+
- `relaysms-vault.target` - Service group
159113

160114
## File Locations
161115

162116
- Installation: `/opt/relaysms/relaysms-vault/`
163117
- Configuration: `/opt/relaysms/relaysms-vault/.env`
164118
- Security keys: `/opt/relaysms/relaysms-vault/keys/`
165-
- Data directory: `/opt/relaysms/relaysms-vault/data/`
166-
- Database: `/opt/relaysms/relaysms-vault/data/vault.db`
167-
- Keystores: `/opt/relaysms/relaysms-vault/data/keystore/`
168-
- Services: `/etc/systemd/system/relaysms-vault.target` and `/etc/systemd/system/relaysms-vault*.service`
169-
- Logs: `journalctl -u relaysms-vault*`
119+
- Database: `/opt/relaysms/relaysms-vault/data/vault.db`
120+
- Keystores: `/opt/relaysms/relaysms-vault/data/keystore/`
121+
- Service files: `/etc/systemd/system/relaysms-vault*`

install.sh

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ INSTALL_DIR="/opt/relaysms/relaysms-vault"
66
SERVICE_NAME="relaysms-vault"
77
REPO_URL="https://github.com/smswithoutborders/RelaySMS-Vault.git"
88
BRANCH="${BRANCH:-main}"
9-
USER="${SUDO_USER:-$(whoami)}"
10-
GROUP="$(id -gn $USER)"
119

1210
log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"; }
1311
error() {
@@ -32,7 +30,6 @@ clone_repository() {
3230
else
3331
mkdir -p "$(dirname "$INSTALL_DIR")"
3432
git clone -b "$BRANCH" "$REPO_URL" "$INSTALL_DIR" || error "Failed to clone"
35-
chown -R "$USER:$GROUP" "$INSTALL_DIR"
3633
fi
3734
}
3835

@@ -67,7 +64,6 @@ generate_keys() {
6764
for key in encryption hashing pepper signing; do
6865
[ -f "keys/$key.key" ] || openssl rand -base64 32 >"keys/$key.key"
6966
done
70-
chown -R "$USER:$GROUP" keys
7167
chmod 700 keys
7268
chmod 600 keys/*.key
7369
}
@@ -83,17 +79,13 @@ install_systemd_service() {
8379
log "Installing systemd services"
8480
for service in relaysms-vault.target relaysms-vault-rest.service relaysms-vault-grpc.service relaysms-vault-grpc-internal.service; do
8581
[ -f "$service" ] || error "Service file $service not found"
86-
envsubst <"$service" >/etc/systemd/system/$service || error "Failed to install $service"
82+
cp "$service" /etc/systemd/system/$service || error "Failed to install $service"
8783
done
8884
systemctl daemon-reload && systemctl enable "$SERVICE_NAME.target" || error "Failed to enable services"
8985
}
9086

9187
set_permissions() {
9288
log "Setting permissions"
93-
chown -R "$USER:$GROUP" "$INSTALL_DIR"
94-
chmod -R 750 "$INSTALL_DIR"
95-
chmod 700 keys 2>/dev/null || true
96-
chmod 600 keys/*.key 2>/dev/null || true
9789
chmod 600 .env 2>/dev/null || true
9890
}
9991

manage.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ status)
3030
systemctl status relaysms-vault-rest relaysms-vault-grpc relaysms-vault-grpc-internal
3131
;;
3232
logs)
33-
journalctl -u 'relaysms-vault*' -f
33+
journalctl -u relaysms-vault-rest -u relaysms-vault-grpc -u relaysms-vault-grpc-internal -f
3434
;;
3535
enable)
3636
check_sudo

relaysms-vault-grpc-internal.service

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ After=network.target
44
PartOf=relaysms-vault.target
55

66
[Service]
7-
User=${USER}
8-
Group=${GROUP}
97
WorkingDirectory=/opt/relaysms/relaysms-vault
108
EnvironmentFile=/opt/relaysms/relaysms-vault/.env
119
ExecStart=/opt/relaysms/relaysms-vault/venv/bin/python -u grpc_internal_server.py

relaysms-vault-grpc.service

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ After=network.target
44
PartOf=relaysms-vault.target
55

66
[Service]
7-
User=${USER}
8-
Group=${GROUP}
97
WorkingDirectory=/opt/relaysms/relaysms-vault
108
EnvironmentFile=/opt/relaysms/relaysms-vault/.env
119
ExecStart=/opt/relaysms/relaysms-vault/venv/bin/python -u grpc_server.py

relaysms-vault-rest.service

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ After=network.target
44
PartOf=relaysms-vault.target
55

66
[Service]
7-
User=${USER}
8-
Group=${GROUP}
97
WorkingDirectory=/opt/relaysms/relaysms-vault
108
EnvironmentFile=/opt/relaysms/relaysms-vault/.env
119
ExecStart=/opt/relaysms/relaysms-vault/venv/bin/gunicorn -w 4 -b ${HOST}:${PORT} --log-level=info --access-logfile=- --threads 15 --timeout 30 app:app

0 commit comments

Comments
 (0)