Create Local_with_MINIO.MD

This commit is contained in:
SubBass100
2025-01-17 07:42:16 -05:00
committed by GitHub
parent fead681623
commit 5c8daeeba0

176
Local_with_MINIO.MD Normal file
View File

@@ -0,0 +1,176 @@
```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