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
624sudo apt update
725sudo 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
1532sudo git clone https://github.com/smswithoutborders/RelaySMS-Vault.git \
1633 /opt/relaysms/relaysms-vault
1734cd /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
2440python3 -m venv venv
2541venv/bin/pip install --upgrade pip
2642venv/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
3956cp template.env .env
40- # Edit .env as needed
4157vim .env
4258```
4359
44- ## Generate Security Keys
60+ ### Generate Security Keys
4561
4662``` bash
4763mkdir -p keys
@@ -51,119 +67,55 @@ openssl rand -base64 32 > keys/pepper.key
5167openssl rand -base64 32 > keys/signing.key
5268chmod 700 keys
5369chmod 600 keys/* .key
70+ chmod 600 .env
5471```
5572
56- ## Create Data Directory
73+ ### Initialize Runtime
5774
5875``` bash
5976mkdir -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/
7785sudo systemctl daemon-reload
7886sudo 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
106105Edit ` /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* `
0 commit comments