docs: add all untracked content
This commit is contained in:
parent
430ef868af
commit
0a7bbc10d5
200
home/docker/docker-organization.md
Normal file
200
home/docker/docker-organization.md
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
---
|
||||||
|
title: Guide for Docker Organization
|
||||||
|
description: Ai Written (local llama3.2:3b model)
|
||||||
|
published: true
|
||||||
|
date: 2025-06-03T11:52:58.719Z
|
||||||
|
tags: llama3.2:3b, llamavista
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2025-06-03T11:50:29.981Z
|
||||||
|
---
|
||||||
|
|
||||||
|
Guide: Best Practices for Docker Organization
|
||||||
|
====================================================================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
Docker provides a powerful way to manage and deploy applications using containers.
|
||||||
|
However, as your containerized application grows in complexity, managing and
|
||||||
|
maintaining it can become overwhelming. This guide outlines best practices for
|
||||||
|
organizing and maintaining Docker containers, including data structure, naming
|
||||||
|
conventions, updating containers, and improving ease of use.
|
||||||
|
|
||||||
|
**Data Structure**
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
1. **Create a clear directory structure**: Organize your project into logical
|
||||||
|
directories, such as `docker-compose`, `config`, `data`, `logs`, and `images`.
|
||||||
|
2. **Use a consistent naming convention**: Use a consistent naming scheme for
|
||||||
|
containers, images, and volumes to make it easier to identify and manage them.
|
||||||
|
3. **Store sensitive data securely**: Store sensitive data, such as database
|
||||||
|
credentials or API keys, in environment variables or secure storage solutions like
|
||||||
|
Hashicorp's Vault.
|
||||||
|
|
||||||
|
**Container Naming Conventions**
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
1. **Use a clear naming scheme**: Use a consistent naming scheme for containers, such
|
||||||
|
as `app-name-service-name` or `app-name-version`.
|
||||||
|
2. **Avoid using special characters**: Avoid using special characters in container
|
||||||
|
names to prevent issues with shell commands and file system permissions.
|
||||||
|
3. **Keep it concise**: Keep container names concise and descriptive to make them
|
||||||
|
easier to identify.
|
||||||
|
|
||||||
|
**Updating Containers Regularly**
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
1. **Regularly update dependencies**: Use tools like `pip` or `npm` to regularly
|
||||||
|
update dependencies in your containers.
|
||||||
|
2. **Use Docker Compose's built-in updates**: Use Docker Compose's built-in features,
|
||||||
|
such as `docker-compose pull`, to update images and containers.
|
||||||
|
3. **Automate testing**: Automate testing of updated containers to ensure they
|
||||||
|
function correctly.
|
||||||
|
|
||||||
|
**Improving Ease of Use**
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
1. **Use Docker Compose's scripts**: Use Docker Compose's scripts feature to automate
|
||||||
|
tasks, such as starting and stopping containers.
|
||||||
|
2. **Create a `docker-compose.yml` file**: Create a `docker-compose.yml` file that
|
||||||
|
defines your containerized application and automates its deployment and management.
|
||||||
|
|
||||||
|
**Example Directory Structure**
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
```bash
|
||||||
|
my-app/
|
||||||
|
|---- docker-compose.yml
|
||||||
|
|---- config/
|
||||||
|
| |---- database.properties
|
||||||
|
|---- data/
|
||||||
|
| |---- logs/
|
||||||
|
|---- images/
|
||||||
|
| |---- app-image:latest
|
||||||
|
|---- logs/
|
||||||
|
|---- .env
|
||||||
|
```
|
||||||
|
|
||||||
|
This directory structure includes a clear separation of concerns, with separate
|
||||||
|
directories for configuration files, data storage, and container images.
|
||||||
|
|
||||||
|
**Example `docker-compose.yml` File**
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
environment:
|
||||||
|
- DATABASE_URL=postgres://user:password@db:5432/mydb
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres
|
||||||
|
volumes:
|
||||||
|
- ./data/db:/var/lib/postgresql/data
|
||||||
|
```
|
||||||
|
|
||||||
|
This `docker-compose.yml` file defines two services, `app` and `db`, with clear
|
||||||
|
dependencies and environment variables.
|
||||||
|
|
||||||
|
**Guide 2: Best Practices for Docker Security, Networking, Updating, and Monitoring**
|
||||||
|
=====================================================================================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
Docker provides a powerful way to manage and deploy applications using containers.
|
||||||
|
However, as your containerized application grows in complexity, managing and
|
||||||
|
maintaining it can become overwhelming. This guide outlines best practices for
|
||||||
|
securing, networking, updating, and monitoring Docker containers.
|
||||||
|
|
||||||
|
**Security Best Practices**
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
1. **Use secure protocols**: Use secure protocols, such as HTTPS, to protect data
|
||||||
|
transmitted between containers and the outside world.
|
||||||
|
2. **Implement access controls**: Implement access controls, such as Docker's
|
||||||
|
`docker-compose run` command with the `-u` flag, to restrict access to sensitive data.
|
||||||
|
3. **Regularly update dependencies**: Regularly update dependencies in your
|
||||||
|
containers to ensure you have the latest security patches.
|
||||||
|
|
||||||
|
**Networking Best Practices**
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
1. **Use a network for communication**: Use a Docker network for communication
|
||||||
|
between containers to isolate them and prevent unauthorized access.
|
||||||
|
2. **Configure firewall rules**: Configure firewall rules to restrict incoming and
|
||||||
|
outgoing traffic to specific ports and protocols.
|
||||||
|
3. **Use a reverse proxy**: Use a reverse proxy, such as NGINX or Apache, to protect
|
||||||
|
your application from external attacks.
|
||||||
|
|
||||||
|
**Updating Containers Regularly**
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
1. **Regularly update dependencies**: Use tools like `pip` or `npm` to regularly
|
||||||
|
update dependencies in your containers.
|
||||||
|
2. **Use Docker Compose's built-in updates**: Use Docker Compose's built-in features,
|
||||||
|
such as `docker-compose pull`, to update images and containers.
|
||||||
|
3. **Automate testing**: Automate testing of updated containers to ensure they
|
||||||
|
function correctly.
|
||||||
|
|
||||||
|
**Monitoring Containers**
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
1. **Use Docker's built-in logging**: Use Docker's built-in logging feature to
|
||||||
|
monitor container logs.
|
||||||
|
2. **Install monitoring tools**: Install monitoring tools, such as Prometheus and
|
||||||
|
Grafana, to track key metrics and performance indicators.
|
||||||
|
3. **Set up alerts and notifications**: Set up alerts and notifications to notify you
|
||||||
|
of issues or anomalies in your application.
|
||||||
|
|
||||||
|
**Example Docker Network**
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3'
|
||||||
|
networks:
|
||||||
|
app-network:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
networks:
|
||||||
|
- app-network
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres
|
||||||
|
volumes:
|
||||||
|
- ./data/db:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- app-network
|
||||||
|
```
|
||||||
|
|
||||||
|
This Docker network configuration defines a bridge network for communication between
|
||||||
|
containers.
|
||||||
|
|
||||||
|
**Example Prometheus Configuration**
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
```yml
|
||||||
|
global:
|
||||||
|
scrape_interval: 10s
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: 'app'
|
||||||
|
scrape_interval: 10s
|
||||||
|
metrics_path: '/metrics'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['localhost:8080']
|
||||||
|
```
|
||||||
|
|
||||||
|
This Prometheus configuration defines a scrape interval of 10 seconds and targets the
|
||||||
|
`localhost:8080` port for scraping metrics.
|
||||||
106
home/docker/docker-security-monitoring.md
Normal file
106
home/docker/docker-security-monitoring.md
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
---
|
||||||
|
title: Docker Security / Monitoring / Maintenance
|
||||||
|
description: Ai Written (llama3.2:3b)
|
||||||
|
published: true
|
||||||
|
date: 2025-06-03T11:54:26.507Z
|
||||||
|
tags: ollama, llama3.2:3b, llamavista
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2025-06-03T11:54:24.932Z
|
||||||
|
---
|
||||||
|
|
||||||
|
**Guide: Best Practices for Docker Security, Networking, Updating, and Monitoring**
|
||||||
|
=====================================================================================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
Docker provides a powerful way to manage and deploy applications using containers.
|
||||||
|
However, as your containerized application grows in complexity, managing and
|
||||||
|
maintaining it can become overwhelming. This guide outlines best practices for
|
||||||
|
securing, networking, updating, and monitoring Docker containers.
|
||||||
|
|
||||||
|
**Security Best Practices**
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
1. **Use secure protocols**: Use secure protocols, such as HTTPS, to protect data
|
||||||
|
transmitted between containers and the outside world.
|
||||||
|
2. **Implement access controls**: Implement access controls, such as Docker's
|
||||||
|
`docker-compose run` command with the `-u` flag, to restrict access to sensitive data.
|
||||||
|
3. **Regularly update dependencies**: Regularly update dependencies in your
|
||||||
|
containers to ensure you have the latest security patches.
|
||||||
|
|
||||||
|
**Networking Best Practices**
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
1. **Use a network for communication**: Use a Docker network for communication
|
||||||
|
between containers to isolate them and prevent unauthorized access.
|
||||||
|
2. **Configure firewall rules**: Configure firewall rules to restrict incoming and
|
||||||
|
outgoing traffic to specific ports and protocols.
|
||||||
|
3. **Use a reverse proxy**: Use a reverse proxy, such as NGINX or Apache, to protect
|
||||||
|
your application from external attacks.
|
||||||
|
|
||||||
|
**Updating Containers Regularly**
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
1. **Regularly update dependencies**: Use tools like `pip` or `npm` to regularly
|
||||||
|
update dependencies in your containers.
|
||||||
|
2. **Use Docker Compose's built-in updates**: Use Docker Compose's built-in features,
|
||||||
|
such as `docker-compose pull`, to update images and containers.
|
||||||
|
3. **Automate testing**: Automate testing of updated containers to ensure they
|
||||||
|
function correctly.
|
||||||
|
|
||||||
|
**Monitoring Containers**
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
1. **Use Docker's built-in logging**: Use Docker's built-in logging feature to
|
||||||
|
monitor container logs.
|
||||||
|
2. **Install monitoring tools**: Install monitoring tools, such as Prometheus and
|
||||||
|
Grafana, to track key metrics and performance indicators.
|
||||||
|
3. **Set up alerts and notifications**: Set up alerts and notifications to notify you
|
||||||
|
of issues or anomalies in your application.
|
||||||
|
|
||||||
|
**Example Docker Network**
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3'
|
||||||
|
networks:
|
||||||
|
app-network:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
networks:
|
||||||
|
- app-network
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres
|
||||||
|
volumes:
|
||||||
|
- ./data/db:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- app-network
|
||||||
|
```
|
||||||
|
|
||||||
|
This Docker network configuration defines a bridge network for communication between
|
||||||
|
containers.
|
||||||
|
|
||||||
|
**Example Prometheus Configuration**
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
```yml
|
||||||
|
global:
|
||||||
|
scrape_interval: 10s
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: 'app'
|
||||||
|
scrape_interval: 10s
|
||||||
|
metrics_path: '/metrics'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['localhost:8080']
|
||||||
|
```
|
||||||
|
|
||||||
|
This Prometheus configuration defines a scrape interval of 10 seconds and targets the
|
||||||
|
`localhost:8080` port for scraping metrics.
|
||||||
15
home/homelab/WoLAddrs.md
Normal file
15
home/homelab/WoLAddrs.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
title: Wake on LAN Addresses
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2025-06-02T20:04:56.549Z
|
||||||
|
tags:
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2025-06-02T02:28:12.160Z
|
||||||
|
---
|
||||||
|
|
||||||
|
# Wake on LAN Addresses
|
||||||
|
<br></br>
|
||||||
|
| Computer Name | MAC Address |
|
||||||
|
|:----: | :----: |
|
||||||
|
| BinarySage | 2c:f0:5d:99:d2:ef |
|
||||||
486
home/homelab/grok-AI-server-guide.md
Normal file
486
home/homelab/grok-AI-server-guide.md
Normal file
@ -0,0 +1,486 @@
|
|||||||
|
---
|
||||||
|
title: Full Guide - Install Ubuntu Server and Configure Ollama with CodeGemma and Phi-3 Mini
|
||||||
|
description: AI Project
|
||||||
|
published: true
|
||||||
|
date: 2025-06-01T20:09:17.154Z
|
||||||
|
tags: ai, guide, walk-though, ubuntu server, server, ollama
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2025-06-01T20:09:15.206Z
|
||||||
|
---
|
||||||
|
|
||||||
|
# Install Ubuntu Server and Configure Ollama with CodeGemma and Phi-3 Mini
|
||||||
|
|
||||||
|
This guide provides step-by-step instructions to set up a headless **Ubuntu Server 24.04 LTS** on a PC with the following specs, install **Ollama** with **CodeGemma 7B** for user `arti` (Python coding assistance) and **Phi-3 Mini (3.8B)** for user `phixr` (system administration tasks), and restrict each user’s SSH access to their respective interactive AI session:
|
||||||
|
|
||||||
|
- **GPU**: Radeon RX 6600 (8 GB VRAM)
|
||||||
|
- **CPU**: AMD Ryzen 7 2700 (8 cores, ~3.2 GHz)
|
||||||
|
- **RAM**: 64 GB (2133 MT/s)
|
||||||
|
- **Storage**: 465.8 GB NVMe SSD (`nvme0n1`), 2x 931.5 GB SSDs (`sda`, `sdb`)
|
||||||
|
|
||||||
|
The setup is command-line only, with no desktop environment or window manager, and assumes you’re replacing any existing OS (e.g., Proxmox). Both models use Q4_K_M quantization to fit within 8 GB VRAM and <20 GB disk space, leveraging ROCm for GPU acceleration.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 1: Prepare for Ubuntu Server Installation
|
||||||
|
|
||||||
|
Let’s prepare to install Ubuntu Server on your NVMe SSD, replacing any existing OS.
|
||||||
|
|
||||||
|
1. **Download Ubuntu Server 24.04 LTS**:
|
||||||
|
- On another computer, download the ISO:
|
||||||
|
```bash
|
||||||
|
wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
|
||||||
|
```
|
||||||
|
- Or download manually from [ubuntu.com](https://ubuntu.com/download/server).
|
||||||
|
- Verify the ISO:
|
||||||
|
```bash
|
||||||
|
sha256sum ubuntu-24.04-live-server-amd64.iso
|
||||||
|
```
|
||||||
|
- Check the hash against [Ubuntu’s checksums](https://releases.ubuntu.com/24.04/).
|
||||||
|
|
||||||
|
2. **Create a Bootable USB Drive**:
|
||||||
|
- Use a USB drive (≥4 GB). Identify it with:
|
||||||
|
```bash
|
||||||
|
lsblk
|
||||||
|
```
|
||||||
|
- Write the ISO (replace `/dev/sdX` with your USB device):
|
||||||
|
```bash
|
||||||
|
sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress && sync
|
||||||
|
```
|
||||||
|
- **Warning**: Double-check `/dev/sdX` to avoid overwriting other drives.
|
||||||
|
- Alternatively, use Rufus (Windows) or Etcher (cross-platform).
|
||||||
|
|
||||||
|
3. **Backup Existing Data**:
|
||||||
|
- If replacing Proxmox or another OS, back up data to an external drive or another system:
|
||||||
|
```bash
|
||||||
|
scp -r /path/to/data user@other-machine:/destination
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Boot from USB**:
|
||||||
|
- Insert the USB, reboot, and enter the BIOS (usually `Del` or `F2`).
|
||||||
|
- Set the USB as the first boot device.
|
||||||
|
- Save and reboot to start the Ubuntu installer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 2: Install Ubuntu Server 24.04 LTS
|
||||||
|
|
||||||
|
Let’s install Ubuntu Server on the NVMe SSD (`nvme0n1`, 465.8 GB).
|
||||||
|
|
||||||
|
1. **Start the Installer**:
|
||||||
|
- Select “Install Ubuntu Server”.
|
||||||
|
- Set language (English), keyboard layout, and network (DHCP or static IP).
|
||||||
|
|
||||||
|
2. **Configure Storage**:
|
||||||
|
- Choose “Custom storage layout”.
|
||||||
|
- Partition `nvme0n1`:
|
||||||
|
- **EFI Partition**: 1 GB, `fat32`, mount at `/boot/efi`.
|
||||||
|
- **Root Partition**: 464.8 GB, `ext4`, mount at `/`.
|
||||||
|
- Example (in installer):
|
||||||
|
- Select `nvme0n1`, create partitions as above.
|
||||||
|
- Write changes and confirm.
|
||||||
|
- Optional: Use `sda` or `sdb` (931.5 GB SSDs) for additional storage (e.g., mount as `/data`).
|
||||||
|
|
||||||
|
3. **Set Up Users and SSH**:
|
||||||
|
- Set hostname (e.g., `ai-server`).
|
||||||
|
- Create an admin user (e.g., `admin`):
|
||||||
|
- Username: `admin`
|
||||||
|
- Password: Set a secure password.
|
||||||
|
- Enable “Install OpenSSH server”.
|
||||||
|
- Skip importing SSH keys unless needed.
|
||||||
|
|
||||||
|
4. **Complete Installation**:
|
||||||
|
- Select no additional packages (Ollama and ROCm will be installed later).
|
||||||
|
- Finish and reboot.
|
||||||
|
|
||||||
|
5. **Verify Boot**:
|
||||||
|
- Remove the USB, boot into Ubuntu, and log in as `admin` via a local terminal or SSH:
|
||||||
|
```bash
|
||||||
|
ssh admin@<server-ip>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 3: Install AMD ROCm for Radeon RX 6600
|
||||||
|
|
||||||
|
Let’s set up ROCm to enable GPU acceleration for Ollama.
|
||||||
|
|
||||||
|
1. **Update System**:
|
||||||
|
```bash
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Add ROCm Repository**:
|
||||||
|
- Install dependencies and add ROCm 5.7:
|
||||||
|
```bash
|
||||||
|
sudo apt install -y wget gnupg
|
||||||
|
wget -qO - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
|
||||||
|
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/5.7 ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Install ROCm**:
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y rocm-libs rocminfo
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Verify ROCm**:
|
||||||
|
- Reboot:
|
||||||
|
```bash
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
- Check GPU:
|
||||||
|
```bash
|
||||||
|
rocminfo
|
||||||
|
```
|
||||||
|
- Look for “Navi 23 [Radeon RX 6600]”.
|
||||||
|
- Check VRAM:
|
||||||
|
```bash
|
||||||
|
rocm-smi --showmeminfo vram
|
||||||
|
```
|
||||||
|
- Expect ~8192 MB.
|
||||||
|
|
||||||
|
5. **Troubleshooting**:
|
||||||
|
- If no GPU is detected, verify:
|
||||||
|
```bash
|
||||||
|
lspci | grep -i vga
|
||||||
|
```
|
||||||
|
- Try ROCm 5.6:
|
||||||
|
```bash
|
||||||
|
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/5.6 ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list
|
||||||
|
sudo apt update && sudo apt install -y rocm-libs
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 4: Install Ollama and Models
|
||||||
|
|
||||||
|
Let’s install Ollama and download both **CodeGemma 7B** and **Phi-3 Mini**.
|
||||||
|
|
||||||
|
1. **Install Ollama**:
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://ollama.com/install.sh | sh
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
ollama --version
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Pull CodeGemma 7B**:
|
||||||
|
- Download Q4_K_M (~4.2 GB):
|
||||||
|
```bash
|
||||||
|
ollama pull codegemma:7b
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
ollama list
|
||||||
|
```
|
||||||
|
- Expect `codegemma:7b` (q4_k_m).
|
||||||
|
|
||||||
|
3. **Test CodeGemma**:
|
||||||
|
- Run:
|
||||||
|
```bash
|
||||||
|
ollama run codegemma:7b
|
||||||
|
```
|
||||||
|
- Prompt: “Debug: `x = [1, 2]; print(x[2])`.”
|
||||||
|
- Expected: “Check the list’s length with `len(x)`.”
|
||||||
|
- Exit: `Ctrl+D`.
|
||||||
|
|
||||||
|
4. **Pull Phi-3 Mini**:
|
||||||
|
- Download Q4_K_M (~2.3 GB):
|
||||||
|
```bash
|
||||||
|
ollama pull phi3:mini
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
ollama list
|
||||||
|
```
|
||||||
|
- Expect `phi3:mini` (q4_k_m).
|
||||||
|
|
||||||
|
5. **Test Phi-3 Mini**:
|
||||||
|
- Run:
|
||||||
|
```bash
|
||||||
|
ollama run phi3:mini
|
||||||
|
```
|
||||||
|
- Prompt: “Walk me through configuring a firewall.”
|
||||||
|
- Expected: “Install `ufw` with `sudo apt install ufw`. Enable with `sudo ufw enable`.”
|
||||||
|
- Exit: `Ctrl+D`.
|
||||||
|
|
||||||
|
6. **Verify GPU Usage**:
|
||||||
|
- During a session, check:
|
||||||
|
```bash
|
||||||
|
rocm-smi
|
||||||
|
```
|
||||||
|
- CodeGemma: ~5–6 GB VRAM.
|
||||||
|
- Phi-3 Mini: ~3.5–4.5 GB VRAM.
|
||||||
|
|
||||||
|
7. **Enable Ollama Service**:
|
||||||
|
```bash
|
||||||
|
sudo systemctl enable ollama
|
||||||
|
sudo systemctl start ollama
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
systemctl status ollama
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 5: Configure User `arti` for CodeGemma 7B
|
||||||
|
|
||||||
|
Let’s restrict `arti`’s SSH access to an interactive CodeGemma 7B session for Python coding.
|
||||||
|
|
||||||
|
1. **Create User `arti`**:
|
||||||
|
```bash
|
||||||
|
sudo adduser arti
|
||||||
|
```
|
||||||
|
- Set a secure password, optional details (e.g., full name: “Artificial Intelligence”).
|
||||||
|
|
||||||
|
2. **Restrict Home Directory**:
|
||||||
|
```bash
|
||||||
|
sudo chown arti:arti /home/arti
|
||||||
|
sudo chmod 700 /home/arti
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
ls -ld /home/arti
|
||||||
|
```
|
||||||
|
- Expect: `drwx------ arti arti`
|
||||||
|
|
||||||
|
3. **Create Shell Script**:
|
||||||
|
```bash
|
||||||
|
sudo nano /usr/local/bin/ollama-shell
|
||||||
|
```
|
||||||
|
- Add:
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
echo "Starting CodeGemma 7B interactive session..."
|
||||||
|
/usr/bin/ollama run codegemma:7b
|
||||||
|
```
|
||||||
|
- Save and exit.
|
||||||
|
- Make executable:
|
||||||
|
```bash
|
||||||
|
sudo chmod +x /usr/local/bin/ollama-shell
|
||||||
|
sudo chown root:root /usr/local/bin/ollama-shell
|
||||||
|
sudo chmod 755 /usr/local/bin/ollama-shell
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Set Shell**:
|
||||||
|
```bash
|
||||||
|
sudo usermod -s /usr/local/bin/ollama-shell arti
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
getent passwd arti
|
||||||
|
```
|
||||||
|
- Expect: `arti:x:1000:1000:,,,:/home/arti:/usr/local/bin/ollama-shell`
|
||||||
|
|
||||||
|
5. **Add GPU Access**:
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render arti
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Restrict SSH**:
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/ssh/sshd_config
|
||||||
|
```
|
||||||
|
- Add:
|
||||||
|
```bash
|
||||||
|
Match User arti
|
||||||
|
ForceCommand /usr/local/bin/ollama-shell
|
||||||
|
```
|
||||||
|
- Restart SSH:
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart sshd
|
||||||
|
```
|
||||||
|
|
||||||
|
7. **Limit Permissions**:
|
||||||
|
```bash
|
||||||
|
sudo usermod -G nogroup arti
|
||||||
|
```
|
||||||
|
|
||||||
|
8. **Test SSH**:
|
||||||
|
```bash
|
||||||
|
ssh arti@<server-ip>
|
||||||
|
```
|
||||||
|
- Expect: `Starting CodeGemma 7B interactive session...`
|
||||||
|
- Prompt: “Debug: `x = '5'; y = 3; print(x + y)`.”
|
||||||
|
- Expected: “Check types with `type(x)`.”
|
||||||
|
- Exit: `Ctrl+D` (terminates SSH).
|
||||||
|
- Try: `ssh arti@<server-ip> bash` (should fail).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 6: Configure User `phixr` for Phi-3 Mini
|
||||||
|
|
||||||
|
Let’s restrict `phixr`’s SSH access to a Phi-3 Mini session for system administration.
|
||||||
|
|
||||||
|
1. **Create User `phixr`**:
|
||||||
|
```bash
|
||||||
|
sudo adduser phixr
|
||||||
|
```
|
||||||
|
- Set password, optional details (e.g., full name: “Phi-3 System Admin”).
|
||||||
|
|
||||||
|
2. **Restrict Home Directory**:
|
||||||
|
```bash
|
||||||
|
sudo chown phixr:phixr /home/phixr
|
||||||
|
sudo chmod 700 /home/phixr
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
ls -ld /home/phixr
|
||||||
|
```
|
||||||
|
- Expect: `drwx------ phixr phixr`
|
||||||
|
|
||||||
|
3. **Create Shell Script**:
|
||||||
|
```bash
|
||||||
|
sudo nano /usr/local/bin/ollama-phi3-shell
|
||||||
|
```
|
||||||
|
- Add:
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
echo "Starting Phi-3 Mini interactive session..."
|
||||||
|
/usr/bin/ollama run phi3:mini
|
||||||
|
```
|
||||||
|
- Save and exit.
|
||||||
|
- Make executable:
|
||||||
|
```bash
|
||||||
|
sudo chmod +x /usr/local/bin/ollama-phi3-shell
|
||||||
|
sudo chown root:root /usr/local/bin/ollama-phi3-shell
|
||||||
|
sudo chmod 755 /usr/local/bin/ollama-phi3-shell
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Set Shell**:
|
||||||
|
```bash
|
||||||
|
sudo usermod -s /usr/local/bin/ollama-phi3-shell phixr
|
||||||
|
```
|
||||||
|
- Verify:
|
||||||
|
```bash
|
||||||
|
getent passwd phixr
|
||||||
|
```
|
||||||
|
- Expect: `phixr:x:1001:1001:,,,:/home/phixr:/usr/local/bin/ollama-phi3-shell`
|
||||||
|
|
||||||
|
5. **Add GPU Access**:
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G render phixr
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Restrict SSH**:
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/ssh/sshd_config
|
||||||
|
```
|
||||||
|
- Add (below `Match User arti`):
|
||||||
|
```bash
|
||||||
|
Match User phixr
|
||||||
|
ForceCommand /usr/local/bin/ollama-phi3-shell
|
||||||
|
```
|
||||||
|
- Restart SSH:
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart sshd
|
||||||
|
```
|
||||||
|
|
||||||
|
7. **Limit Permissions**:
|
||||||
|
```bash
|
||||||
|
sudo usermod -G nogroup phixr
|
||||||
|
```
|
||||||
|
|
||||||
|
8. **Test SSH**:
|
||||||
|
```bash
|
||||||
|
ssh phixr@<server-ip>
|
||||||
|
```
|
||||||
|
- Expect: `Starting Phi-3 Mini interactive session...`
|
||||||
|
- Prompt: “Walk me through installing pfSense.”
|
||||||
|
- Expected: “Download the ISO from pfsense.org. Create a USB with `dd if=pfSense.iso of=/dev/sdX bs=4M`.”
|
||||||
|
- Exit: `Ctrl+D` (terminates SSH).
|
||||||
|
- Try: `ssh phixr@<server-ip> bash` (should fail).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 7: Optimize and Troubleshoot
|
||||||
|
|
||||||
|
Let’s ensure optimal performance and address potential issues.
|
||||||
|
|
||||||
|
1. **Performance Optimization**:
|
||||||
|
- **CodeGemma 7B**: ~5–6 GB VRAM, ~8–12 tokens/second. Good for Python debugging.
|
||||||
|
- **Phi-3 Mini**: ~3.5–4.5 GB VRAM, ~10–15 tokens/second. Ideal for system administration guidance.
|
||||||
|
- **Prompting**:
|
||||||
|
- `arti`: “Debug this Python code: [snippet].”
|
||||||
|
- `phixr`: “Walk me through [task] step-by-step.”
|
||||||
|
- **Temperature**: For precise responses, set temperature to 0.2:
|
||||||
|
- For CodeGemma:
|
||||||
|
```bash
|
||||||
|
nano ~/.ollama/models/codegemma-modelfile
|
||||||
|
```
|
||||||
|
Add:
|
||||||
|
```
|
||||||
|
FROM codegemma:7b
|
||||||
|
PARAMETER temperature 0.2
|
||||||
|
```
|
||||||
|
Create:
|
||||||
|
```bash
|
||||||
|
ollama create codegemma-lowtemp -f ~/.ollama/models/codegemma-modelfile
|
||||||
|
```
|
||||||
|
Update `/usr/local/bin/ollama-shell` to use `ollama run codegemma-lowtemp`.
|
||||||
|
- For Phi-3 Mini:
|
||||||
|
```bash
|
||||||
|
nano ~/.ollama/models/phi3-modelfile
|
||||||
|
```
|
||||||
|
Add:
|
||||||
|
```
|
||||||
|
FROM phi3:mini
|
||||||
|
PARAMETER temperature 0.2
|
||||||
|
```
|
||||||
|
Create:
|
||||||
|
```bash
|
||||||
|
ollama create phi3-lowtemp -f ~/.ollama/models/phi3-modelfile
|
||||||
|
```
|
||||||
|
Update `/usr/local/bin/ollama-phi3-shell` to use `ollama run phi3-lowtemp`.
|
||||||
|
|
||||||
|
2. **Troubleshooting**:
|
||||||
|
- **No Session**:
|
||||||
|
- Check scripts:
|
||||||
|
```bash
|
||||||
|
ls -l /usr/local/bin/ollama-shell /usr/local/bin/ollama-phi3-shell
|
||||||
|
cat /usr/local/bin/ollama-shell
|
||||||
|
cat /usr/local/bin/ollama-phi3-shell
|
||||||
|
```
|
||||||
|
- **GPU Issues**: If slow (~1–5 tokens/second), verify ROCm:
|
||||||
|
```bash
|
||||||
|
rocminfo
|
||||||
|
rocm-smi --showmeminfo vram
|
||||||
|
```
|
||||||
|
- Reinstall ROCm 5.6/5.7 if needed.
|
||||||
|
- **Shell Access**: If `arti` or `phixr` access Bash:
|
||||||
|
```bash
|
||||||
|
getent passwd arti
|
||||||
|
getent passwd phixr
|
||||||
|
```
|
||||||
|
- Confirm shells. Re-run `usermod -s`.
|
||||||
|
- **SSH Errors**:
|
||||||
|
```bash
|
||||||
|
sudo systemctl status sshd
|
||||||
|
```
|
||||||
|
- Restart: `sudo systemctl restart sshd`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Expected Performance
|
||||||
|
- **Hardware Fit**: CodeGemma (~5–6 GB VRAM, ~4.2 GB disk) and Phi-3 Mini (~3.5–4.5 GB VRAM, ~2.3 GB disk) fit your Radeon RX 6600, Ryzen 7 2700, 64 GB RAM, and 465.8 GB NVMe SSD.
|
||||||
|
- **Use Case**:
|
||||||
|
- `arti`: Guides Python coding/debugging (e.g., “Check your list index with `len()`”).
|
||||||
|
- `phixr`: Provides detailed system administration instructions (e.g., “Download pfSense ISO, then use `dd`”).
|
||||||
|
- **Speed**: CodeGemma (~8–12 tokens/second), Phi-3 Mini (~10–15 tokens/second). Responses in ~1–2 seconds.
|
||||||
|
- **Restriction**: `arti` locked to CodeGemma; `phixr` to Phi-3 Mini. No Bash access.
|
||||||
|
|
||||||
|
## Example Usage
|
||||||
|
- **For `arti`**:
|
||||||
|
```bash
|
||||||
|
ssh arti@<server-ip>
|
||||||
|
>>> Debug: x = [1, 2]; print(x[2]).
|
||||||
|
The error suggests an invalid index. Check the list’s length with `len(x)`.
|
||||||
|
```
|
||||||
|
- **For `phixr`**:
|
||||||
|
```bash
|
||||||
|
ssh phixr@<server-ip>
|
||||||
|
>>> Walk me through installing pfSense.
|
||||||
|
Download the ISO from pfsense.org. Create a USB with `dd if=pfSense.iso of=/dev/sdX bs=4M`. Check with `lsblk`.
|
||||||
|
```
|
||||||
@ -2,7 +2,7 @@
|
|||||||
title: Inventory
|
title: Inventory
|
||||||
description: Basic run down of equipment in use
|
description: Basic run down of equipment in use
|
||||||
published: true
|
published: true
|
||||||
date: 2025-06-04T23:35:23.834Z
|
date: 2025-06-04T23:35:25.358Z
|
||||||
tags:
|
tags:
|
||||||
editor: markdown
|
editor: markdown
|
||||||
dateCreated: 2024-07-09T19:44:24.462Z
|
dateCreated: 2024-07-09T19:44:24.462Z
|
||||||
|
|||||||
24
home/linux/fix-mint-autocomplete.md
Normal file
24
home/linux/fix-mint-autocomplete.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
title: Fix Linux Mint Autocomplete
|
||||||
|
description: Autocomplete doesn't work by default
|
||||||
|
published: true
|
||||||
|
date: 2025-02-16T20:40:50.805Z
|
||||||
|
tags:
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2025-02-16T20:40:49.190Z
|
||||||
|
---
|
||||||
|
|
||||||
|
# Fix Linux Mint Autocomplete
|
||||||
|
1. Rename apt to apt-mint in /usr/local/bin/
|
||||||
|
2. Rename apt-linux-mint to apt-mint in /etc/bash_completion.d/
|
||||||
|
3. Edit /etc/bash_completion.d/apt-mint replacing "apt" with "apt-mint" so it looks like this:
|
||||||
|
|
||||||
|
At the top (lines 5 and 6, most likely):
|
||||||
|
`
|
||||||
|
have apt-mint &&
|
||||||
|
_apt-mint()
|
||||||
|
`
|
||||||
|
At the end:
|
||||||
|
`complete -F _apt-mint apt-mint`
|
||||||
|
|
||||||
|
Credit: https://forums.linuxmint.com/viewtopic.php?p=2276518&sid=3b36b9fa5693b543ed571cf304275c30#p2276518
|
||||||
114
home/linux/nginx/configuration.md
Normal file
114
home/linux/nginx/configuration.md
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
---
|
||||||
|
title: NGINX Configuration
|
||||||
|
description: How to simply configure and NGINX http server
|
||||||
|
published: true
|
||||||
|
date: 2025-02-27T20:27:40.472Z
|
||||||
|
tags: nginx, server, http, linux
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2025-02-27T15:48:54.929Z
|
||||||
|
---
|
||||||
|
|
||||||
|
# Configuring NGINX
|
||||||
|
|
||||||
|
#### Note:
|
||||||
|
Following "The NGINX Crash Course" by Laiture on Youtube.com
|
||||||
|
*Big BIG thanks to Laiture for this incredible how to video.*
|
||||||
|
|
||||||
|
##### - */etc/nginx/nginx.conf ==> main configuration file*
|
||||||
|
|
||||||
|
|
||||||
|
## Terminology:
|
||||||
|
Directives - key value pairs within blocks of code
|
||||||
|
|
||||||
|
Contexts - blocks of code that contain directives. http, events, etc... events context must be present.
|
||||||
|
|
||||||
|
|
||||||
|
To Start NGINX:
|
||||||
|
`nginx`
|
||||||
|
|
||||||
|
Simplest Static Site:
|
||||||
|
- Use http and events context:
|
||||||
|
```
|
||||||
|
#nginx.conf example
|
||||||
|
http {
|
||||||
|
server{
|
||||||
|
listen 8080;
|
||||||
|
root /var/www/html;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
events {}
|
||||||
|
```
|
||||||
|
Reload NGINX after changes:
|
||||||
|
`nginx -s reload`
|
||||||
|
|
||||||
|
## Mime Types
|
||||||
|
|
||||||
|
- Mime types allow styles and other dynamic content to be served based on filetypes.
|
||||||
|
- Mime.types file contains a collection of filetypes supported by NGINX to serve.
|
||||||
|
- Including it in the conf file allows dynamic content to be served.
|
||||||
|
|
||||||
|
To include Mime Types simply add:
|
||||||
|
`include mime.types`
|
||||||
|
|
||||||
|
## Location Block
|
||||||
|
|
||||||
|
- Adding a location block can be done as the following:
|
||||||
|
```
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
root /var/www/html;
|
||||||
|
|
||||||
|
location /somepath { # http://localhost:8080/somepath
|
||||||
|
root /var/www/html; # Serves index.html within /somepath folder in /var/www/html
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
- Location can take directives such as:
|
||||||
|
1. *alias* - redirects elsewhere such as:
|
||||||
|
```
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
root /var/www/html;
|
||||||
|
|
||||||
|
location /somepath { # http://localhost:8080/somepath
|
||||||
|
root /var/www/html; # Serves index.html within /somepath folder in /var/www/html
|
||||||
|
}
|
||||||
|
location /otherpath {
|
||||||
|
alias /var/www/html/somepath; # Points back to "somepath".
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
2. *try_files* - Specifies files to try before index.html, followed by what to show if not found.
|
||||||
|
- Example: ` try_files /somepath/somesite.html /index.html =404; `
|
||||||
|
- Explanation:
|
||||||
|
- Try to find and serve *somesite.html* in *somepath* folder and if not found, redirect to *root/index.html*.
|
||||||
|
- If neither are found, produce 404 Error.
|
||||||
|
|
||||||
|
## Redirects & Rewrites
|
||||||
|
|
||||||
|
### Redirects:
|
||||||
|
|
||||||
|
```
|
||||||
|
location /somesite {
|
||||||
|
return 307 /someOtherSite;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rewrite:
|
||||||
|
|
||||||
|
```
|
||||||
|
rewrite /some/path/I/want /to/some/path/that/exists;
|
||||||
|
|
||||||
|
location { ... }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user