mirror of
https://github.com/openmhz/trunk-server.git
synced 2026-11-12 08:47:40 -05:00
177 lines
4.7 KiB
Markdown
177 lines
4.7 KiB
Markdown
```markdown
|
|
# Installing Trunk-Server Locally (no HTTPS)
|
|
|
|
## Prerequisites:
|
|
|
|
1. **Set static IP for trunk-server**
|
|
2. **Set DNS for admin account**: Point `api` to the trunk-server IP.
|
|
3. **Install Ubuntu Server 24.04**
|
|
4. **Update system:**
|
|
```bash
|
|
sudo apt update
|
|
sudo apt upgrade
|
|
```
|
|
5. **Add subdomains to `/etc/hosts`:**
|
|
```bash
|
|
127.0.0.1 openmhz.test account.openmhz.test api.openmhz.test admin.openmhz.test media.openmhz.test
|
|
```
|
|
6. **Flush DNS cache:**
|
|
```bash
|
|
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
|
|
```
|
|
|
|
7. **Create a file in your user's home directory for AWS credentials:**
|
|
```bash
|
|
mkdir ~/.aws
|
|
nano credentials
|
|
```
|
|
Add the following content to the file:
|
|
```ini
|
|
[default]
|
|
aws_access_key_id = [..]
|
|
aws_secret_access_key = [..]
|
|
```
|
|
|
|
## Install Docker (from Docker Docs)
|
|
|
|
1. **Update and install prerequisites:**
|
|
```bash
|
|
sudo apt update
|
|
sudo apt-get install ca-certificates curl
|
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|
```
|
|
|
|
2. **Add Docker's official GPG key:**
|
|
```bash
|
|
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
|
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
|
```
|
|
|
|
3. **Add Docker repository to APT sources:**
|
|
```bash
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
```
|
|
|
|
4. **Update system and install Docker:**
|
|
```bash
|
|
sudo apt update
|
|
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
```
|
|
|
|
## Setting up MINIO (on another machine/VM)
|
|
|
|
- It is possible to run MinIO on the same machine (though not recommended).
|
|
- Follow the MinIO installation guide for Linux: [MinIO Installation Docs](https://min.io/docs/minio/linux/operations/installation.html)
|
|
- For a small home setup, use **Single-Node Single-Drive (SNSD)** or **Standalone** mode.
|
|
|
|
### High-Level MinIO Crash Course:
|
|
|
|
1. **Create a bucket** (this is where you will store audio from TrunkServer).
|
|
2. **Set Access Policy for the bucket to Public** (Reminder: This is for local, NON-Internet only).
|
|
3. **Create an Access Key and Secret**:
|
|
- Copy the secret as you can only view it once. If lost, create a new key and delete the old one.
|
|
|
|
## Install Trunk Server
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone https://github.com/openmhz/trunk-server
|
|
cd trunk-server
|
|
```
|
|
|
|
2. **Copy example environment file:**
|
|
```bash
|
|
cp test.env.example test.env
|
|
```
|
|
|
|
3. **Edit the environment file:**
|
|
```bash
|
|
nano test.env
|
|
```
|
|
Add the following:
|
|
```bash
|
|
export S3_PROFILE='default'
|
|
export S3_REGION='us-east-1'
|
|
export S3_ENDPOINT='http://minio.domain.com:9000'
|
|
export S3_BUCKET='bucketname'
|
|
```
|
|
Save and exit.
|
|
|
|
4. **Adjust `uploads.js` to work with MinIO path:**
|
|
```bash
|
|
nano ~/trunk-server/backend/controllers/uploads.js
|
|
```
|
|
- In Nano, press `ALT+n` to show line numbers.
|
|
- Around line 50, add the following crucial line:
|
|
```javascript
|
|
const client = new S3Client({
|
|
requestHandler: new NodeHttpHandler({
|
|
httpsAgent: agent,
|
|
}),
|
|
credentials: fromIni({ profile: s3_profile }),
|
|
endpoint: s3_endpoint,
|
|
region: s3_region,
|
|
maxAttempts: 2,
|
|
forcePathStyle: true,
|
|
});
|
|
```
|
|
|
|
5. **Build and start the server:**
|
|
```bash
|
|
./docker-test.sh build # This will take a while
|
|
./docker-test.sh up -d # This starts the server as a daemon
|
|
```
|
|
|
|
6. **Make sure you have the following commands available when running `./docker-test.sh`:**
|
|
```bash
|
|
./docker-test.sh build
|
|
./docker-test.sh up -d
|
|
./docker-test.sh down
|
|
```
|
|
|
|
## Creating Accounts (without an email server)
|
|
|
|
1. Go to `account.(yourtrunkservername).(yourdomain).com`.
|
|
2. Click **Register**.
|
|
3. Fill out the form and click **Register** (nothing will happen right away).
|
|
4. Connect to the right Docker container:
|
|
```bash
|
|
docker exec -i -t $(docker ps -a | grep mongo | awk '{print $1}') /bin/bash
|
|
```
|
|
|
|
5. **Access MongoDB shell:**
|
|
```bash
|
|
mongosh
|
|
```
|
|
|
|
6. **Select the `scanner` database:**
|
|
```bash
|
|
use scanner
|
|
```
|
|
|
|
7. **Find and update user to confirm email:**
|
|
```bash
|
|
db.users.find()
|
|
db.users.updateOne(
|
|
{ "_id" : ObjectId("63a620d0a63b087b005f6726") },
|
|
{
|
|
$set: { "confirmEmail" : true },
|
|
$currentDate: { lastModified: true }
|
|
}
|
|
)
|
|
```
|
|
|
|
## Useful Commands
|
|
|
|
### TrunkServer Logs:
|
|
```bash
|
|
docker-compose logs --follow --tail 50
|
|
```
|
|
|
|
### Build, Stop, and Start TrunkServer:
|
|
```bash
|
|
./docker-test.sh build
|