updated env and sh completed
This commit is contained in:
parent
b146e32d50
commit
1ed5cffe45
|
|
@ -0,0 +1,7 @@
|
|||
# MongoDB credentials
|
||||
MONGO_ROOT_USERNAME=admin
|
||||
MONGO_ROOT_PASSWORD=change_this_password
|
||||
|
||||
# Mongo Express credentials
|
||||
MONGOEXPRESS_USERNAME=mexpress
|
||||
MONGOEXPRESS_PASSWORD=change_this_password_too
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
#!/bin/bash
|
||||
# Docker installation script for LXC container in Proxmox
|
||||
|
||||
# Exit on any error
|
||||
set -e
|
||||
|
||||
echo "Starting Docker installation for LXC container..."
|
||||
|
||||
# Fix DNS if needed
|
||||
echo "Checking and fixing DNS configuration..."
|
||||
if ! grep -q "nameserver" /etc/resolv.conf; then
|
||||
echo "DNS configuration missing or empty, adding Google DNS servers..."
|
||||
echo "nameserver 8.8.8.8
|
||||
nameserver 8.8.4.4" > /etc/resolv.conf
|
||||
echo "DNS configuration fixed."
|
||||
fi
|
||||
|
||||
# Install basic tools first
|
||||
echo "Installing basic tools..."
|
||||
apt update
|
||||
apt install -y curl wget apt-transport-https ca-certificates gnupg lsb-release
|
||||
|
||||
# Update the system
|
||||
echo "Updating system packages..."
|
||||
apt update && apt upgrade -y
|
||||
|
||||
# Download the Docker installation script
|
||||
echo "Downloading official Docker installation script..."
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||
|
||||
# Make it executable
|
||||
chmod +x get-docker.sh
|
||||
|
||||
# Run the installation script
|
||||
echo "Running Docker installation script..."
|
||||
sh ./get-docker.sh
|
||||
|
||||
# Install Docker Compose
|
||||
echo "Installing Docker Compose..."
|
||||
curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
chmod +x /usr/local/bin/docker-compose
|
||||
|
||||
# Enable Docker to start on boot
|
||||
echo "Enabling Docker to start on boot..."
|
||||
systemctl enable docker
|
||||
|
||||
# Verify installations
|
||||
echo "Verifying installations..."
|
||||
docker --version
|
||||
docker-compose --version
|
||||
|
||||
echo "Docker installation complete!"
|
||||
echo "You can now use Docker and Docker Compose in your LXC container."
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
#!/bin/bash
|
||||
# Network troubleshooting script for LXC containers
|
||||
|
||||
# Exit on any error
|
||||
set -e
|
||||
|
||||
echo "Starting network troubleshooting..."
|
||||
|
||||
# Check if we can ping IP addresses
|
||||
echo "Testing basic connectivity..."
|
||||
if ping -c 2 8.8.8.8 >/dev/null 2>&1; then
|
||||
echo "✅ Basic network connectivity works (can ping 8.8.8.8)"
|
||||
else
|
||||
echo "❌ Cannot ping 8.8.8.8 - basic network connectivity issue"
|
||||
echo "Checking network interfaces..."
|
||||
ip a
|
||||
fi
|
||||
|
||||
# Check and fix DNS
|
||||
echo "Checking DNS configuration..."
|
||||
if ! grep -q "nameserver" /etc/resolv.conf || ! host archive.ubuntu.com >/dev/null 2>&1; then
|
||||
echo "❌ DNS resolution not working, fixing..."
|
||||
|
||||
# Add Google DNS servers
|
||||
echo "nameserver 8.8.8.8
|
||||
nameserver 8.8.4.4" > /etc/resolv.conf
|
||||
|
||||
echo "✅ Added Google DNS servers to /etc/resolv.conf"
|
||||
|
||||
# Make DNS changes persistent
|
||||
echo "Making DNS changes persistent..."
|
||||
mkdir -p /etc/systemd/resolved.conf.d/
|
||||
cat > /etc/systemd/resolved.conf.d/dns_servers.conf << EOF
|
||||
[Resolve]
|
||||
DNS=8.8.8.8 8.8.4.4
|
||||
FallbackDNS=1.1.1.1
|
||||
EOF
|
||||
|
||||
# Try to restart systemd-resolved if it exists
|
||||
if systemctl status systemd-resolved >/dev/null 2>&1; then
|
||||
systemctl restart systemd-resolved
|
||||
echo "✅ Restarted systemd-resolved"
|
||||
fi
|
||||
|
||||
# Try to restart systemd-networkd if it exists
|
||||
if systemctl status systemd-networkd >/dev/null 2>&1; then
|
||||
systemctl restart systemd-networkd
|
||||
echo "✅ Restarted systemd-networkd"
|
||||
fi
|
||||
else
|
||||
echo "✅ DNS configuration looks good"
|
||||
fi
|
||||
|
||||
# Add hosts entries as a fallback
|
||||
echo "Adding fallback entries to /etc/hosts..."
|
||||
if ! grep -q "archive.ubuntu.com" /etc/hosts; then
|
||||
cat >> /etc/hosts << EOF
|
||||
185.125.190.36 archive.ubuntu.com
|
||||
185.125.190.36 security.ubuntu.com
|
||||
EOF
|
||||
echo "✅ Added Ubuntu repositories to /etc/hosts"
|
||||
fi
|
||||
|
||||
# Test DNS resolution
|
||||
echo "Testing DNS resolution..."
|
||||
if host archive.ubuntu.com >/dev/null 2>&1; then
|
||||
echo "✅ DNS resolution working for archive.ubuntu.com"
|
||||
else
|
||||
echo "❌ DNS resolution still not working for archive.ubuntu.com"
|
||||
echo "Trying ping with hosts file..."
|
||||
if ping -c 2 archive.ubuntu.com >/dev/null 2>&1; then
|
||||
echo "✅ Can ping archive.ubuntu.com using hosts file entry"
|
||||
else
|
||||
echo "❌ Still cannot reach archive.ubuntu.com"
|
||||
echo "This may be a more serious network issue with your LXC container"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Network troubleshooting completed"
|
||||
echo "Try running 'apt update' now to see if it works"
|
||||
|
|
@ -2,7 +2,21 @@
|
|||
|
||||
This guide will walk you through creating and configuring an LXC container in Proxmox that's optimized for running Docker and our MongoDB service.
|
||||
|
||||
## Step 1: Create a new LXC Container in Proxmox
|
||||
## Step 1: Download the Ubuntu 22.04 LTS Template
|
||||
|
||||
If you don't already have the Ubuntu 22.04 LTS template in your Proxmox server, you'll need to download it first:
|
||||
|
||||
1. Log in to your Proxmox web interface
|
||||
2. Select your node in the server view
|
||||
3. Go to the "Local" storage (or any storage configured for CT templates)
|
||||
4. Click on the "Templates" button
|
||||
5. In the template list, find "ubuntu-22.04-standard" in the list
|
||||
- If you don't see it, click on "Templates" and then search for "ubuntu-22.04"
|
||||
- If the template list is empty or doesn't show Ubuntu 22.04, you may need to refresh the list by clicking "Refresh"
|
||||
6. Click on the template and then click "Download"
|
||||
7. Wait for the download to complete
|
||||
|
||||
## Step 2: Create a new LXC Container in Proxmox
|
||||
|
||||
1. Log in to your Proxmox web interface
|
||||
2. Select your node in the server view
|
||||
|
|
@ -17,7 +31,13 @@ This guide will walk you through creating and configuring an LXC container in Pr
|
|||
- SSH Public Key: (optionally add your SSH key)
|
||||
|
||||
- **Template**:
|
||||
- Select a recent Ubuntu or Debian template (e.g., ubuntu-22.04-standard)
|
||||
- **Best choice**: Ubuntu 22.04 LTS (ubuntu-22.04-standard)
|
||||
- Reasons:
|
||||
- Excellent Docker compatibility
|
||||
- Long-term support until 2027
|
||||
- Best documentation and community support for Docker
|
||||
- Most stable kernel features needed for containerization
|
||||
- Regular security updates
|
||||
|
||||
- **Disks**:
|
||||
- Storage: (select your storage)
|
||||
|
|
@ -38,7 +58,7 @@ This guide will walk you through creating and configuring an LXC container in Pr
|
|||
|
||||
5. Click "Finish" to create the container
|
||||
|
||||
## Step 2: Configure the LXC Container for Docker
|
||||
## Step 3: Configure the LXC Container for Docker
|
||||
|
||||
After creating the container, you need to modify its configuration to support Docker:
|
||||
|
||||
|
|
@ -67,7 +87,7 @@ lxc.mount.auto: proc:rw sys:rw
|
|||
|
||||
5. Start the container
|
||||
|
||||
## Step 3: Install Docker inside the LXC Container
|
||||
## Step 4: Configure Network and Install Docker
|
||||
|
||||
1. Start the container and access its shell:
|
||||
|
||||
|
|
@ -76,60 +96,148 @@ pct start <container-id>
|
|||
pct enter <container-id>
|
||||
```
|
||||
|
||||
2. Update the system:
|
||||
2. **IMPORTANT: Check if your network interface has an IP address:**
|
||||
|
||||
```bash
|
||||
ip a
|
||||
```
|
||||
|
||||
If your eth0 interface doesn't show an IPv4 address (like 192.168.x.x), you need to configure it first:
|
||||
|
||||
```bash
|
||||
# For Proxmox LXC containers, configure networking from the Proxmox web interface:
|
||||
|
||||
1. Exit the container first with 'exit' command
|
||||
2. In the Proxmox web interface, select your container from the left sidebar
|
||||
3. Click 'Stop' to stop the container if it's running
|
||||
4. Go to the 'Network' tab
|
||||
5. If there's no network interface, click 'Create' to add one:
|
||||
- Name: eth0
|
||||
- Bridge: vmbr0 (or your preferred bridge)
|
||||
- IPv4: DHCP (or Static with your preferred IP configuration)
|
||||
- IPv4/CIDR: (if using static IP, enter something like 192.168.1.100/24)
|
||||
- Gateway: (if using static IP, enter your gateway, e.g., 192.168.1.1)
|
||||
6. If there's already a network interface, click 'Edit' and update the configuration
|
||||
7. Click 'OK' to save the changes
|
||||
8. Go back to the 'Summary' tab and click 'Start' to start the container
|
||||
9. Click 'Console' to access the container
|
||||
|
||||
# Alternatively, use the command line on the Proxmox host:
|
||||
|
||||
# Stop the container
|
||||
pct stop <container-id>
|
||||
|
||||
# Configure networking (DHCP)
|
||||
pct set <container-id> -net0 name=eth0,bridge=vmbr0,ip=dhcp
|
||||
|
||||
# Or configure with static IP (replace with your network details)
|
||||
pct set <container-id> -net0 name=eth0,bridge=vmbr0,ip=192.168.1.100/24,gw=192.168.1.1
|
||||
|
||||
# Start the container again
|
||||
pct start <container-id>
|
||||
pct enter <container-id>
|
||||
|
||||
# Verify you now have an IP address
|
||||
ip a
|
||||
```
|
||||
|
||||
3. Fix network connectivity issues:
|
||||
|
||||
```bash
|
||||
# First, check if you can ping IP addresses
|
||||
ping -c 4 8.8.8.8
|
||||
|
||||
# If you can't ping IPs, check your network interface
|
||||
ip a
|
||||
|
||||
# Check your container's network configuration
|
||||
cat /etc/network/interfaces
|
||||
|
||||
# Check DNS configuration
|
||||
cat /etc/resolv.conf
|
||||
|
||||
# Fix DNS by adding these entries to resolv.conf
|
||||
echo "nameserver 8.8.8.8
|
||||
nameserver 8.8.4.4" > /etc/resolv.conf
|
||||
|
||||
# Make the DNS changes persistent by editing the systemd-resolved configuration
|
||||
mkdir -p /etc/systemd/resolved.conf.d/
|
||||
cat > /etc/systemd/resolved.conf.d/dns_servers.conf << EOF
|
||||
[Resolve]
|
||||
DNS=8.8.8.8 8.8.4.4
|
||||
FallbackDNS=1.1.1.1
|
||||
EOF
|
||||
|
||||
# Restart networking and DNS services
|
||||
systemctl restart systemd-networkd
|
||||
systemctl restart systemd-resolved
|
||||
|
||||
# Test DNS resolution
|
||||
host archive.ubuntu.com
|
||||
```
|
||||
|
||||
4. If DNS is still not working, try adding entries to /etc/hosts:
|
||||
|
||||
```bash
|
||||
# Add essential Ubuntu repositories to /etc/hosts
|
||||
cat >> /etc/hosts << EOF
|
||||
185.125.190.36 archive.ubuntu.com
|
||||
185.125.190.36 security.ubuntu.com
|
||||
EOF
|
||||
|
||||
# Test if it works
|
||||
ping -c 2 archive.ubuntu.com
|
||||
```
|
||||
|
||||
5. Install basic tools:
|
||||
|
||||
```bash
|
||||
apt update
|
||||
apt install -y curl wget apt-transport-https ca-certificates gnupg lsb-release
|
||||
```
|
||||
|
||||
6. Update the system:
|
||||
|
||||
```bash
|
||||
apt update && apt upgrade -y
|
||||
```
|
||||
|
||||
3. Install required packages:
|
||||
7. Install Docker using the official installation script:
|
||||
|
||||
```bash
|
||||
apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg
|
||||
# Download the Docker installation script
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||
|
||||
# Review the script (optional but recommended)
|
||||
less get-docker.sh
|
||||
|
||||
# Run the installation script
|
||||
sh get-docker.sh
|
||||
```
|
||||
|
||||
4. Add Docker's official GPG key and repository:
|
||||
This script automatically detects your OS, adds the appropriate repositories, and installs Docker and its dependencies.
|
||||
|
||||
For Ubuntu:
|
||||
```bash
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
```
|
||||
|
||||
For Debian:
|
||||
```bash
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
```
|
||||
|
||||
5. Update the package database and install Docker:
|
||||
|
||||
```bash
|
||||
apt update
|
||||
apt install -y docker-ce docker-ce-cli containerd.io
|
||||
```
|
||||
|
||||
6. Install Docker Compose:
|
||||
8. Install Docker Compose:
|
||||
|
||||
```bash
|
||||
curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
chmod +x /usr/local/bin/docker-compose
|
||||
```
|
||||
|
||||
7. Verify the installations:
|
||||
9. Verify the installations:
|
||||
|
||||
```bash
|
||||
docker --version
|
||||
docker-compose --version
|
||||
```
|
||||
|
||||
8. Enable Docker to start on boot:
|
||||
10. Enable Docker to start on boot:
|
||||
|
||||
```bash
|
||||
systemctl enable docker
|
||||
```
|
||||
|
||||
## Step 4: Deploy MongoDB using Docker Compose
|
||||
## Step 5: Deploy MongoDB using Docker Compose
|
||||
|
||||
1. Create a directory for your MongoDB service:
|
||||
|
||||
|
|
@ -163,7 +271,7 @@ docker-compose up -d
|
|||
docker-compose ps
|
||||
```
|
||||
|
||||
## Step 5: Configure Firewall (Optional but Recommended)
|
||||
## Step 6: Configure Firewall (Optional but Recommended)
|
||||
|
||||
If you're using a firewall on your Proxmox host, make sure to allow traffic to ports 27017 and 8081:
|
||||
|
||||
|
|
@ -177,7 +285,7 @@ iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
|
|||
iptables -A INPUT -p tcp --dport 8081 -j ACCEPT
|
||||
```
|
||||
|
||||
## Step 6: Test the Connection
|
||||
## Step 7: Test the Connection
|
||||
|
||||
From your external machine, test the connection to MongoDB:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue