Actually made progress
This commit is contained in:
parent
e27ba46ffe
commit
7dbcb516a3
|
@ -17,8 +17,7 @@
|
||||||
- NGINX
|
- NGINX
|
||||||
- Jellyfin
|
- Jellyfin
|
||||||
- Vaultwarden
|
- Vaultwarden
|
||||||
- Gitea
|
- Mailcow
|
||||||
- (Optional for now) Mailcow
|
|
||||||
## 2024-02-23
|
## 2024-02-23
|
||||||
- Time mostly spent on Getting my new Laptop up and running due to the previous ones Motherboard failing.
|
- Time mostly spent on Getting my new Laptop up and running due to the previous ones Motherboard failing.
|
||||||
- Set up Proxmox Cluster for testing and Deploying above mentioned services in LXQ and started configuration of VPN gateway for remote access.
|
- Set up Proxmox Cluster for testing and Deploying above mentioned services in LXQ and started configuration of VPN gateway for remote access.
|
||||||
|
@ -29,3 +28,9 @@
|
||||||
- Goals for next lesson :
|
- Goals for next lesson :
|
||||||
- Figure out how to load balance with nginx and how to create my own LXQ Templates
|
- Figure out how to load balance with nginx and how to create my own LXQ Templates
|
||||||
- Finish setting up VPN Gateway
|
- Finish setting up VPN Gateway
|
||||||
|
|
||||||
|
## 2024-06-28
|
||||||
|
- Waking up from my Coma
|
||||||
|
- Most of the project is done but undocumented
|
||||||
|
- Overdose on Caffeine and Write Documentation
|
||||||
|
|
||||||
|
|
29
README.md
29
README.md
|
@ -2,3 +2,32 @@
|
||||||
|
|
||||||
## Journal
|
## Journal
|
||||||
See here : [JOURNAL.md](JOURNAL.md)
|
See here : [JOURNAL.md](JOURNAL.md)
|
||||||
|
|
||||||
|
## What this Project covers?
|
||||||
|
- Making Custom LXQ Container
|
||||||
|
- Managing a Proxmox VE Environement
|
||||||
|
- Demonstrating example services
|
||||||
|
|
||||||
|
## The Basics
|
||||||
|
Covers the basics neede to know to make sense of this
|
||||||
|
|
||||||
|
### What is Proxmox VE
|
||||||
|
Proxmox VE is an open-source server management platform designed for enterprise virtualisation.
|
||||||
|
It allows you to create and manage virtual machines and containers using a pretty UI either on a single server over over a cluster of servers.
|
||||||
|
|
||||||
|
### What is an LXC Container?
|
||||||
|
An LXC Container in Proxmox VE is a lighteweight virtualization method that allow you to run multiple isolated Linux Systems (Containers) on a single Host using the shared Linux Kernel.
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
|
### What you will need
|
||||||
|
- 1x or more Proxmox Node(s)
|
||||||
|
- Linux Computer
|
||||||
|
- Incase you wish to publicly offer your services a virtual router
|
||||||
|
|
||||||
|
### How to use image_builder.sh
|
||||||
|
image_builder.sh is a bash script written by me that helps making custom proxmox container templates.
|
||||||
|
|
||||||
|
A preconofigured version can be found in /image_builder in this repo
|
||||||
|
|
||||||
|
# Todo document this (its 5am and i want to sleep rn)
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Load parameters from params.conf
|
||||||
|
source params.conf
|
||||||
|
|
||||||
|
# Function to find the lowest free container ID starting from MIN_ID
|
||||||
|
find_lowest_free_id() {
|
||||||
|
local id=$MIN_ID
|
||||||
|
while pct status $id &>/dev/null || qm status $id &>/dev/null; do
|
||||||
|
((id++))
|
||||||
|
done
|
||||||
|
echo $id
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the container ID
|
||||||
|
if [ -z "$CTID" ]; then
|
||||||
|
CTID=$(find_lowest_free_id)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate disk name
|
||||||
|
DISK_NAME="vm-${CTID}-disk-0"
|
||||||
|
|
||||||
|
# Determine the current directory
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
|
||||||
|
# Set default values for EXPORT_PATH and SCRIPT if not set in params.conf
|
||||||
|
EXPORT_PATH=${EXPORT_PATH:-$CURRENT_DIR}
|
||||||
|
SCRIPT=${SCRIPT:-$CURRENT_DIR/script.sh}
|
||||||
|
STORAGE=${STORAGE:-local-btrfs}
|
||||||
|
DISK_SIZE=${DISK_SIZE:-8}
|
||||||
|
|
||||||
|
# Full rootfs parameter
|
||||||
|
ROOTFS="${STORAGE}:${DISK_SIZE}"
|
||||||
|
|
||||||
|
# Check if the script file exists
|
||||||
|
if [ ! -f "$SCRIPT" ]; then
|
||||||
|
echo "Script file $SCRIPT does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the container already exists on the local node
|
||||||
|
if pct status $CTID &>/dev/null; then
|
||||||
|
echo "VM $CTID already exists on this node."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the container with the correct storage format
|
||||||
|
if ! pct create $CTID $TEMPLATE --rootfs $ROOTFS --cores $CORES --memory $RAM --swap $SWAP --net0 name=eth0,bridge=$BRIDGE,ip=$IP --hostname $HOSTNAME; then
|
||||||
|
echo "Failed to create the container."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start the container
|
||||||
|
if ! pct start $CTID; then
|
||||||
|
echo "Failed to start the container."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run the shell script in the container
|
||||||
|
if ! pct exec $CTID -- /bin/bash -c "$(cat $SCRIPT)"; then
|
||||||
|
echo "Failed to run the script inside the container."
|
||||||
|
pct stop $CTID
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Stop the container
|
||||||
|
if ! pct stop $CTID; then
|
||||||
|
echo "Failed to stop the container."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Export the container as a tar.gz file
|
||||||
|
EXPORT_NAME=${EXPORT_NAME:-vzdump-lxc-$CTID}
|
||||||
|
BACKUP_FILE=$EXPORT_PATH/$EXPORT_NAME.tar.gz
|
||||||
|
if ! vzdump $CTID --dumpdir $EXPORT_PATH --compress gzip; then
|
||||||
|
echo "Failed to export the container."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Container $CTID has been created, configured, and exported to $BACKUP_FILE"
|
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
TEMPLATE=adastor:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst
|
||||||
|
# Set your Baseimage here
|
||||||
|
|
||||||
|
RAM=1024
|
||||||
|
# Define RAM during setup
|
||||||
|
|
||||||
|
SWAP=512
|
||||||
|
# Define SWAP during setup
|
||||||
|
|
||||||
|
CORES=2
|
||||||
|
# Define Cores during setup
|
||||||
|
|
||||||
|
BRIDGE=vmbr0
|
||||||
|
# Define Network interface during Installation
|
||||||
|
|
||||||
|
IP=dhcp
|
||||||
|
# Define IP During installation (use DHCP, proper static V4 not implemented)
|
||||||
|
|
||||||
|
CTID=
|
||||||
|
# Manually Override CTID, not needed usually
|
||||||
|
|
||||||
|
HOSTNAME=nginx-debian
|
||||||
|
# Set Temporary Hostname
|
||||||
|
|
||||||
|
EXPORT_NAME=mycontainer_backup
|
||||||
|
# Doesnt work anyways so yea
|
||||||
|
|
||||||
|
EXPORT_PATH=
|
||||||
|
# Leave this empty to use the current directory
|
||||||
|
|
||||||
|
SCRIPT=
|
||||||
|
# Leave this empty to use script.sh in the current directory
|
||||||
|
|
||||||
|
MIN_ID=200
|
||||||
|
# Define minimum ID for CT to avoid conflicts with other nodes if in a cluster
|
||||||
|
|
||||||
|
STORAGE=local-btrfs
|
||||||
|
# Set what storage pool to use
|
||||||
|
|
||||||
|
DISK_SIZE=8
|
||||||
|
# Set the default disk size for the container
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Ensure the locale environment variables are set correctly
|
||||||
|
export LANGUAGE=en_US.UTF-8
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
|
export LC_ALL=en_US.UTF-8
|
||||||
|
|
||||||
|
# Install locales and configure locale settings
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y locales
|
||||||
|
locale-gen en_US.UTF-8
|
||||||
|
|
||||||
|
# Update and install packages for Debian
|
||||||
|
apt-get update
|
||||||
|
apt-get upgrade -y
|
||||||
|
apt-get install -y nginx
|
||||||
|
|
||||||
|
# Enable nginx service
|
||||||
|
systemctl enable nginx
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
apt-get clean
|
Loading…
Reference in New Issue