+49
-6
@@ -14,31 +14,64 @@ host.com/api/... -> backend (FastAPI, /api prefix stripped)
|
|||||||
### Build
|
### Build
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo $VITE_API_TARGET=http://192.168.1.21:8000 > .build/prod/.env
|
echo $VITE_API_TARGET=https://radiusadmin.example.com > .build/prod/.env
|
||||||
docker compose -f .build/prod/compose.yml up -d --build
|
docker compose -f .build/prod/compose.yml up -d --build
|
||||||
```
|
```
|
||||||
### Running from published images
|
### Running from published images
|
||||||
- compose.yml
|
- compose.yml
|
||||||
```yml
|
```yml
|
||||||
services:
|
services:
|
||||||
|
database:
|
||||||
|
image: mysql
|
||||||
|
hostname: database
|
||||||
|
environment:
|
||||||
|
- MYSQL_RANDOM_ROOT_PASSWORD=yes
|
||||||
|
- MYSQL_USER=radius
|
||||||
|
- MYSQL_PASSWORD=radius
|
||||||
|
- MYSQL_DATABASE=radius
|
||||||
|
volumes:
|
||||||
|
- ./mysql:/var/lib/mysql
|
||||||
|
|
||||||
|
freeradius:
|
||||||
|
image: freeradius/freeradius-server
|
||||||
|
hostname: freeradius
|
||||||
|
ports:
|
||||||
|
- 1812:1812/udp
|
||||||
|
- 1813:1813/udp
|
||||||
|
# volumes:
|
||||||
|
# - ./freeradius/sql:/etc/freeradius/mods-enabled/sql
|
||||||
|
# - /etc/freeradius/3.0/:/etc/freeradius/
|
||||||
|
depends_on:
|
||||||
|
- database
|
||||||
|
|
||||||
|
adminer:
|
||||||
|
image: dockette/adminer:mysql
|
||||||
|
hostname: adminer
|
||||||
|
ports:
|
||||||
|
- 8001:80
|
||||||
|
depends_on:
|
||||||
|
- database
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
hostname: backend
|
|
||||||
image: git.shihaam.dev/sarlink/radadmin/backend
|
image: git.shihaam.dev/sarlink/radadmin/backend
|
||||||
|
hostname: backend
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
|
depends_on:
|
||||||
|
- database
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
hostname: frontend
|
|
||||||
image: git.shihaam.dev/sarlink/radadmin/frontend
|
image: git.shihaam.dev/sarlink/radadmin/frontend
|
||||||
|
hostname: frontend
|
||||||
ports:
|
ports:
|
||||||
- 8000:80
|
- 8000:80
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend```
|
||||||
```
|
|
||||||
- Create `compose.yml` with the above yaml
|
- Create `compose.yml` with the above yaml
|
||||||
- Create .env and fill
|
- Create .env and fill
|
||||||
```
|
```
|
||||||
# --- Database (FreeRADIUS) ---
|
# --- Database (FreeRADIUS) ---
|
||||||
DB_HOST=raddb
|
DB_HOST=database
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_USER=radadmin
|
DB_USER=radadmin
|
||||||
DB_PASSWORD=changeme
|
DB_PASSWORD=changeme
|
||||||
@@ -47,3 +80,13 @@ DB_NAME=radius
|
|||||||
# --- API ---
|
# --- API ---
|
||||||
API_KEY=changeme
|
API_KEY=changeme
|
||||||
```
|
```
|
||||||
|
- Start the services `docker compose up -d` and wait few mins for db to initilize
|
||||||
|
- copy db schema from freeradius and backend to mysql and import it
|
||||||
|
```shell
|
||||||
|
docker compose cp freeradius:/etc/freeradius/mods-config/sql/main/mysql/schema.sql .
|
||||||
|
docker compose cp schema.sql database:/schema.sql
|
||||||
|
docker compose exec database sh -c 'mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" < /schema.sql'
|
||||||
|
docker compose cp backend:/app/radadmin_schema.sql .
|
||||||
|
docker compose cp radadmin_schema.sql database:/radadmin_schema.sql
|
||||||
|
docker compose exec database sh -c 'mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" < /radadmin_schema.sql'
|
||||||
|
```
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
-- Tables required by the radadmin API that are NOT part of the FreeRADIUS
|
||||||
|
-- schema. FreeRADIUS never reads or writes these; they hold billing status and
|
||||||
|
-- human-only metadata (name/phone/alias). Import this after the FreeRADIUS
|
||||||
|
-- schema.sql.
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS customers (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
username VARCHAR(64) NOT NULL,
|
||||||
|
mac_address VARCHAR(17) NOT NULL,
|
||||||
|
status VARCHAR(10) NOT NULL DEFAULT 'new',
|
||||||
|
created_at DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS radadmin_clients (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
mac_address VARCHAR(17) NOT NULL,
|
||||||
|
name VARCHAR(128) NULL,
|
||||||
|
phone VARCHAR(32) NULL,
|
||||||
|
alias VARCHAR(64) NULL,
|
||||||
|
created_at DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY uq_radadmin_clients_mac (mac_address)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS radadmin_devices (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
mac_address VARCHAR(17) NOT NULL,
|
||||||
|
alias VARCHAR(64) NULL,
|
||||||
|
created_at DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY uq_radadmin_devices_mac (mac_address)
|
||||||
|
);
|
||||||
Reference in New Issue
Block a user