This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
+175
View File
@@ -0,0 +1,175 @@
# **Portainer Service in Home Lab**
## **Overview of Portainer**
Portainer is a lightweight, user-friendly management UI designed for Docker and Kubernetes environments. It simplifies the deployment, monitoring, and management of containerized applications, making it an invaluable tool for home lab setups.
### **Key Features**
- **Visualize Your Docker Environment**: See containers, networks, volumes, and images at a glance.
- **Simplified Deployment**: Deploy and manage containers through an intuitive web interface.
- **Monitor Resource Usage**: Keep track of CPU, memory, and storage utilization.
- **Role-Based Access Control (RBAC)**: Manage multi-user access securely.
Portainer is perfect for home lab enthusiasts seeking a powerful yet accessible way to manage Docker containers without relying solely on command-line tools.
---
## **Docker Compose Configuration**
Below is the recommended `docker-compose.yml` for setting up Portainer:
```yaml
version: "3.8"
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9000:9000" # Access the Portainer UI via this port
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Direct Docker management
- portainer_data:/data # Persistent storage for Portainer settings and logs
volumes:
portainer_data:
driver: local
```
---
## **Configuration Explained**
### **1. Image**
The image `portainer/portainer-ce:latest` deploys the latest Community Edition (CE) of Portainer, offering all the features needed for a home lab environment at no cost.
### **2. Container Name**
Explicitly naming the container `portainer` simplifies management, especially when you have multiple containers running.
### **3. Restart Policy**
The `restart: always` policy ensures Portainer automatically restarts after crashes or server reboots, ensuring consistent availability.
### **4. Port Mapping**
Port `9000` is exposed on the host machine to access the Portainer UI via `http://<server-ip>:9000`.
### **5. Volumes**
- **Docker Socket**: The volume `/var/run/docker.sock:/var/run/docker.sock` allows Portainer to communicate directly with the Docker engine for full control.
- **Persistent Data**: `portainer_data:/data` stores settings, logs, and other Portainer data persistently, ensuring they survive container updates or restarts.
### **6. Volume Driver**
The `local` volume driver is ideal for home labs, storing data directly on the host machine's filesystem for simplicity and reliability.
---
## **Setup Instructions**
### **1. Deploy the Service**
1. Save the `docker-compose.yml` file in a directory of your choice.
2. Run the following command to start the Portainer container:
```bash
docker-compose up -d
```
### **2. Access the Portainer UI**
1. Open your web browser.
2. Navigate to:
```none
http://<server-ip>:9000
```
3. On the initial page, set up your admin credentials and follow the configuration wizard to connect Portainer to your local Docker instance.
---
## **Benefits of Using Portainer**
### **Ease of Use**
Portainers web interface is intuitive, making Docker management accessible to users of all experience levels.
### **Enhanced Productivity**
With its visual tools, you can deploy and manage containers in seconds, monitor performance metrics, and troubleshoot issues efficiently.
### **Data Persistence**
By storing data in a volume, Portainer ensures your configurations, logs, and environment settings are preserved across container updates or restarts.
### **Automation and Uptime**
The `restart: always` policy ensures Portainer is always available, reducing downtime and the need for manual intervention.
---
## **Maintenance and Updates**
### **Update Portainer**
To update Portainer to the latest version:
1. Pull the latest image:
```bash
docker-compose pull
```
2. Restart the container:
```bash
docker-compose up -d
```
### **Backup Data**
To back up Portainers persistent data:
1. Locate the volume:
```bash
docker volume inspect portainer_data
```
2. Copy the data to a safe location:
```bash
docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar czf /backup/portainer_backup.tar.gz /data
```
### **Restore Data**
To restore from a backup:
1. Extract the backup:
```bash
tar xzf portainer_backup.tar.gz -C /path/to/data
```
2. Recreate the volume and copy the data:
```bash
docker volume create portainer_data
docker run --rm -v portainer_data:/data -v /path/to/data:/restore alpine cp -r /restore/* /data
```
---
## **Conclusion**
Portainer makes Docker management in a home lab simple, efficient, and accessible. Whether youre deploying services, monitoring resources, or troubleshooting, Portainer is a valuable addition to your toolkit. With this setup, youre ready to take full control of your containerized applications. 🚀