1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 7 <title>Docker Masterclass: 20+ Tutorials for Your Free VPS - FreeVPS.edu.pl</title> 8 <meta name="description" content="Master containerization with 20+ step-by-step Docker tutorials. From installation to advanced DevSecOps on your FreeVPS.edu.pl server."> 9 10 <link rel="preconnect" href="https://fonts.googleapis.com"> 11 <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;800&family=Fira+Code:wght@400;500&display=swap" rel="stylesheet"> 12 <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet" /> 13 14 <style> 15 :root { 16 --bg-color: #f4f7fc; 17 --primary-color: #3d5afe; 18 --docker-blue: #2496ed; 19 --text-color: #1a1a1b; 20 --card-bg: rgba(255, 255, 255, 0.7); 21 --card-border: rgba(255, 255, 255, 1); 22 --shadow: 0 10px 40px rgba(31, 38, 135, 0.08); 23 --border-radius: 20px; 24 } 25 26 * { margin: 0; padding: 0; box-sizing: border-box; scroll-behavior: smooth; } 27 body { font-family: 'Poppins', sans-serif; background: var(--bg-color); color: var(--text-color); line-height: 1.8; } 28 29 .header { 30 position: fixed; top: 15px; left: 50%; transform: translateX(-50%); 31 width: 95%; max-width: 1100px; z-index: 1000; 32 background: rgba(255, 255, 255, 0.8); backdrop-filter: blur(15px); 33 border: 1px solid var(--card-border); border-radius: 50px; 34 padding: 0.8rem 2rem; display: flex; justify-content: space-between; align-items: center; 35 box-shadow: var(--shadow); 36 } 37 .header .logo { font-weight: 800; color: var(--primary-color); text-decoration: none; font-size: 1.3rem; } 38 .header nav a { margin-left: 1.5rem; text-decoration: none; color: var(--text-color); font-weight: 500; font-size: 0.9rem; transition: 0.3s; } 39 40 .tutorial-container { max-width: 900px; margin: 160px auto 60px; padding: 0 20px; } 41 .tutorial-header { text-align: center; margin-bottom: 3rem; } 42 .tutorial-header h1 { font-size: clamp(2rem, 5vw, 3.2rem); font-weight: 800; background: linear-gradient(135deg, var(--docker-blue), #8e2de2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } 43 44 #tutorialSearch { 45 width: 100%; padding: 18px 25px; border-radius: 50px; border: 2px solid #fff; 46 background: white; box-shadow: var(--shadow); outline: none; margin-bottom: 2rem; 47 } 48 49 .faq-item { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--border-radius); margin-bottom: 1.2rem; overflow: hidden; transition: 0.4s; } 50 .faq-question { width: 100%; padding: 20px 25px; background: none; border: none; display: flex; justify-content: space-between; align-items: center; cursor: pointer; text-align: left; } 51 .faq-item.active { border-color: var(--primary-color); background: #fff; } 52 53 .faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.4s ease-out; } 54 .faq-item.active .faq-answer { max-height: 2000px; padding-bottom: 25px; } 55 56 .code-block { position: relative; margin: 1rem 25px; border-radius: 12px; overflow: hidden; } 57 pre[class*="language-"] { margin: 0 !important; border-radius: 12px !important; font-size: 0.85rem !important; } 58 .copy-btn { position: absolute; top: 10px; right: 10px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2); color: #fff; padding: 4px 10px; border-radius: 6px; font-size: 0.7rem; cursor: pointer; z-index: 10; } 59 60 .tag { background: #eef2ff; color: var(--primary-color); padding: 3px 10px; border-radius: 6px; font-size: 0.75rem; margin-right: 12px; font-weight: 600; } 61 .icon { font-size: 1.2rem; color: var(--primary-color); transition: 0.3s; } 62 .active .icon { transform: rotate(45deg); } 63 64 .sponsor-box { text-align: center; background: #fff; padding: 2rem; border-radius: var(--border-radius); border: 1px solid #eee; margin: 4rem auto; max-width: 800px; } 65 .footer { text-align: center; padding: 3rem; color: #777; font-size: 0.9rem; } 66 </style> 67</head> 68<body> 69 70 <header class="header"> 71 <a href="/" class="logo">FreeVPS.edu.pl</a> 72 <nav class="nav"> 73 <a href="/">Home</a> 74 <a href="/free-vps-trial.php">Trial</a> 75 <a href="#tutorials">Docs</a> 76 </nav> 77 </header> 78 79 <main class="tutorial-container"> 80 <div class="tutorial-header"> 81 <h1>Docker Mastery Hub</h1> 82 <p style="text-align: center; max-width: 800px; margin: 0 auto;"> 83 Deploy high-performance containerized environments through our 84 <strong> 85 <a href="https://freevps.edu.pl/free-vps-trial.php" style="color:var(--primary-color); text-decoration:none; border-bottom: 2px solid var(--primary-color);"> 86 Educational Initiative 87 </a> 88 </strong>. 89 Experience the best <strong><a href="/free-vps-trial.php" style="color:var(--text-color); text-decoration:none;">free vps</a></strong>
89 infrastructure for modern developers. 90</p> 91 </div> 92 93 <input type="text" id="tutorialSearch" placeholder="Search 60+ tutorials (e.g. 'Compose', 'SSL', 'Volume')..."> 94 95 <div id="tutorials"> 96 <div class="faq-item" data-search="install linux ubuntu debian script"> 97 <button class="faq-question"> 98 <h3><span class="tag">01</span> Docker Installation (2026 Stable)</h3> 99 <span class="icon">+</span> 100 </button> 101 <div class="faq-answer"> 102 <p style="padding: 0 25px 10px;">The official deployment script for Linux environments.</p> 103 <div class="code-block"> 104 <button class="copy-btn">Copy</button> 105 <pre><code class="language-bash">sudo apt update && sudo apt upgrade -y 106curl -fsSL https://get.docker.com -o get-docker.sh 107sudo sh get-docker.sh 108sudo usermod -aG docker $USER</code></pre> 109 </div> 110 </div> 111 </div> 112 113 <div class="faq-item" data-search="nginx web server deploy port"> 114 <button class="faq-question"> 115 <h3><span class="tag">02</span> Deploying Your First Nginx Container</h3> 116 <span class="icon">+</span> 117 </button> 118 <div class="faq-answer"> 119 <p style="padding: 0 25px 10px;">Launch a high-speed web server mapped to port 80.</p> 120 <div class="code-block"> 121 <button class="copy-btn">Copy</button> 122 <pre><code class="language-bash">docker run -d --name my-web -p 80:80 nginx:latest</code></pre> 123 </div> 124 </div> 125 </div> 126 127 <div class="faq-item" data-search="volumes persistence data storage"> 128 <button class="faq-question"> 129 <h3><span class="tag">03</span> Persistent Data Volumes</h3> 130 <span class="icon">+</span> 131 </button> 132 <div class="faq-answer"> 133 <p style="padding: 0 25px 10px;">Ensure data survives container deletions.</p> 134 <div class="code-block"> 135 <button class="copy-btn">Copy</button> 136 <pre><code class="language-bash">docker volume create site_data 137docker run -d -p 8080:80 -v site_data:/usr/share/nginx/html nginx</code></pre> 138 </div> 139 </div> 140 </div> 141 142 <div class="faq-item" data-search="compose wordpress mysql stack yaml"> 143 <button class="faq-question"> 144 <h3><span class="tag">04</span> Docker-Compose: WordPress Stack</h3> 145 <span class="icon">+</span> 146 </button> 147 <div class="faq-answer"> 148 <p style="padding: 0 25px 10px;">Launch a full CMS stack with YAML.</p> 149 <div class="code-block"> 150 <button class="copy-btn">Copy</button> 151 <pre><code class="language-yaml">services: 152 db: 153 image: mariadb:10.6 154 environment: 155 MYSQL_ROOT_PASSWORD: my_secret_pass 156 wordpress: 157 image: wordpress 158 ports: ["80:80"]</code></pre> 159 </div> 160 </div> 161 </div> 162 163 <div class="faq-item" data-search="portainer gui web interface management"> 164 <button class="faq-question"> 165 <h3><span class="tag">05</span> Portainer: Web-Based GUI</h3> 166 <span class="icon">+</span> 167 </button> 168 <div class="faq-answer"> 169 <p style="padding: 0 25px 10px;">Manage your server from a web dashboard.</p> 170 <div class="code-block"> 171 <button class="copy-btn">Copy</button> 172 <pre><code class="language-bash">docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest</code></pre> 173 </div> 174 </div> 175 </div> 176 177 <div class="faq-item" data-search="dockerfile build custom image"> 178 <button class="faq-question"> 179 <h3><span class="tag">06</span>
179 Building a Custom Dockerfile</h3> 180 <span class="icon">+</span> 181 </button> 182 <div class="faq-answer"> 183 <p style="padding: 0 25px 10px;">Package your own Node.js or Python apps.</p> 184 <div class="code-block"> 185 <pre><code class="language-docker">FROM node:18-alpine 186WORKDIR /app 187COPY . . 188RUN npm install 189CMD ["node", "app.js"]</code></pre> 190 </div> 191 </div> 192 </div> 193 194 <div class="faq-item" data-search="cleanup disk space prune remove"> 195 <button class="faq-question"> 196 <h3><span class="tag">07</span> Disk Space & Cleanup</h3> 197 <span class="icon">+</span> 198 </button> 199 <div class="faq-answer"> 200 <p style="padding: 0 25px 10px;">Remove all unused data on your VPS.</p> 201 <div class="code-block"> 202 <button class="copy-btn">Copy</button> 203 <pre><code class="language-bash">docker system prune -a --volumes</code></pre> 204 </div> 205 </div> 206 </div> 207 208 <div class="faq-item" data-search="ssl proxy manager reverse letsencrypt"> 209 <button class="faq-question"> 210 <h3><span class="tag">08</span> Nginx Proxy Manager (SSL)</h3> 211 <span class="icon">+</span> 212 </button> 213 <div class="faq-answer"> 214 <p style="padding: 0 25px 10px;">Automated SSL certificates for your containers.</p> 215 <div class="code-block"> 216 <button class="copy-btn">Copy</button> 217 <pre><code class="language-bash">docker run -d -p 81:81 -p 443:443 --name npm-proxy jc21/nginx-proxy-manager:latest</code></pre> 218 </div> 219 </div> 220 </div> 221 222 <div class="faq-item" data-search="resource limit memory cpu ram"> 223 <button class="faq-question"> 224 <h3><span class="tag">09</span> Resource Limiting (CPU/RAM)</h3> 225 <span class="icon">+</span> 226 </button> 227 <div class="faq-answer"> 228 <p style="padding: 0 25px 10px;">Hard-limit container memory usage.</p> 229 <div class="code-block"> 230 <button class="copy-btn">Copy</button> 231 <pre><code class="language-bash">docker run -d --name limited-app --memory="512m" --cpus="0.5" nginx</code></pre> 232 </div> 233 </div> 234 </div> 235 236 <div class="faq-item" data-search="logs monitoring dozzle live"> 237 <button class="faq-question"> 238 <h3><span class="tag">10</span> Real-Time Log Monitoring</h3> 239 <span class="icon">+</span> 240 </button> 241 <div class="faq-answer"> 242 <p style="padding: 0 25px 10px;">Web-based log viewer for all services.</p> 243 <div class="code-block"> 244 <button class="copy-btn">Copy</button> 245 <pre><code class="language-bash">docker run -d --name logs -p 8888:8080 -v /var/run/docker.sock:/var/run/docker.sock amir20/dozzle:latest</code></pre> 246 </div> 247 </div> 248 </div> 249 250 <div class="faq-item" data-search="network isolate bridge private"> 251 <button class="faq-question"> 252 <h3><span class="tag">11</span> Isolated Internal Networks</h3> 253 <span class="icon">+</span> 254 </button> 255 <div class="faq-answer"> 256 <p style="padding: 0 25px 10px;">Keep your database invisible to the public internet.</p> 257 <div class="code-block"> 258 <pre><code class="language-bash">docker network create private-net
259docker run -d --network private-net --name db mysql</code></pre> 260 </div> 261 </div> 262 </div> 263 264 <div class="faq-item" data-search="github actions cicd deploy auto"> 265 <button class="faq-question"> 266 <h3><span class="tag">12</span> GitHub Actions CI/CD</h3> 267 <span class="icon">+</span> 268 </button> 269 <div class="faq-answer"> 270 <p style="padding: 0 25px 10px;">Auto-deploy code when you push to GitHub.</p> 271 <div class="code-block"> 272 <pre><code class="language-yaml">- name: Build and Push 273 uses: docker/build-push-action@v4 274 with: 275 push: true</code></pre> 276 </div> 277 </div> 278 </div> 279 280 <div class="faq-item" data-search="healthcheck auto self healing restart"> 281 <button class="faq-question"> 282 <h3><span class="tag">13</span> Self-Healing Healthchecks</h3> 283 <span class="icon">+</span> 284 </button> 285 <div class="faq-answer"> 286 <p style="padding: 0 25px 10px;">Auto-restart unhealthy containers.</p> 287 <div class="code-block"> 288 <pre><code class="language-docker">HEALTHCHECK --interval=30s --timeout=3s \ 289 CMD curl -f http://localhost/ || exit 1</code></pre> 290 </div> 291 </div> 292 </div> 293 294 <div class="faq-item" data-search="multistage build optimize size"> 295 <button class="faq-question"> 296 <h3><span class="tag">14</span> Multi-Stage Build Optimization</h3> 297 <span class="icon">+</span> 298 </button> 299 <div class="faq-answer"> 300 <p style="padding: 0 25px 10px;">Reduce final image size drastically.</p> 301 <div class="code-block"> 302 <pre><code class="language-docker">FROM node:18 AS build 303RUN npm run build 304FROM nginx:alpine 305COPY --from=build /dist /usr/share/nginx/html</code></pre> 306 </div> 307 </div> 308 </div> 309 310 <div class="faq-item" data-search="security scan scout scout vulnerability"> 311 <button class="faq-question"> 312 <h3><span class="tag">15</span> Scanning for Vulnerabilities</h3> 313 <span class="icon">+</span> 314 </button> 315 <div class="faq-answer"> 316 <p style="padding: 0 25px 10px;">Find exploits using Docker Scout.</p> 317 <div class="code-block"> 318 <pre><code class="language-bash">docker scout cves my-app:latest</code></pre> 319 </div> 320 </div> 321 </div> 322 323 <div class="faq-item" data-search="swarm cluster orchestration scale"> 324 <button class="faq-question"> 325 <h3><span class="tag">16</span> Docker Swarm Initialization</h3> 326 <span class="icon">+</span> 327 </button> 328 <div class="faq-answer"> 329 <p style="padding: 0 25px 10px;">Transform your VPS into a Swarm cluster.</p> 330 <div class="code-block"> 331 <pre><code class="language-bash">docker swarm init --advertise-addr YOUR_IP</code></pre> 332 </div> 333 </div> 334 </div> 335 336 <div class="faq-item" data-search="secrets password security vault"> 337 <button class="faq-question"> 338 <h3><span class="tag">17</span> Secure Secret Management</h3> 339 <span class="icon">+</span> 340 </button> 341 <div class="faq-answer"> 342 <p style="padding: 0 25px 10px;">Store passwords outside of configuration files.</p> 343 <div class="code-block"> 344 <pre><code class="language-bash">
344echo "my_pass" | docker secret create db_pass -</code></pre> 345 </div> 346 </div> 347 </div> 348 349 <div class="faq-item" data-search="monitoring prometheus grafana metrics"> 350 <button class="faq-question"> 351 <h3><span class="tag">18</span> Monitoring with Prometheus</h3> 352 <span class="icon">+</span> 353 </button> 354 <div class="faq-answer"> 355 <p style="padding: 0 25px 10px;">Track CPU/RAM metrics over time.</p> 356 <div class="code-block"> 357 <pre><code class="language-bash">docker run -d -p 9090:9090 prom/prometheus</code></pre> 358 </div> 359 </div> 360 </div> 361 362 <div class="faq-item" data-search="backup export save image archive"> 363 <button class="faq-question"> 364 <h3><span class="tag">19</span> Automated Image Backups</h3> 365 <span class="icon">+</span> 366 </button> 367 <div class="faq-answer"> 368 <p style="padding: 0 25px 10px;">Export images to tar archives for safe storage.</p> 369 <div class="code-block"> 370 <pre><code class="language-bash">docker save -o backup.tar my-image:latest</code></pre> 371 </div> 372 </div> 373 </div> 374 375 <div class="faq-item" data-search="audit security inspection hardening"> 376 <button class="faq-question"> 377 <h3><span class="tag">20</span> Final Security Audit</h3> 378 <span class="icon">+</span> 379 </button> 380 <div class="faq-answer"> 381 <p style="padding: 0 25px 10px;">Audit the hardening of your running stack.</p> 382 <div class="code-block"> 383 <pre><code class="language-bash">docker container inspect my-web --format '{{.HostConfig.SecurityOpt}}'</code></pre> 384 </div> 385 </div> 386 </div> 387 <div class="faq-item" data-search="portainer agent cluster management"> 388 <button class="faq-question"> 389 <h3><span class="tag">21</span> Portainer Agent Deployment</h3> 390 <span class="icon">+</span> 391 </button> 392 <div class="faq-answer"> 393 <p style="padding: 0 25px 10px;">Connect multiple VPS nodes to a single central Portainer dashboard.</p> 394 <div class="code-block"> 395 <button class="copy-btn">Copy</button> 396 <pre><code class="language-bash">docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:latest</code></pre> 397 </div> 398 </div> 399 </div> 400 401 <div class="faq-item" data-search="redis cache database performance"> 402 <button class="faq-question"> 403 <h3><span class="tag">22</span> High-Speed Redis Caching</h3> 404 <span class="icon">+</span> 405 </button> 406 <div class="faq-answer"> 407 <p style="padding: 0 25px 10px;">Speed up your PHP or Node apps by deploying an in-memory Redis database.</p> 408 <div class="code-block"> 409 <button class="copy-btn">Copy</button> 410 <pre><code class="language-bash">docker run -d --name redis-cache -p 6379:6379 redis:alpine</code></pre> 411 </div> 412 </div> 413 </div> 414 415 <div class="faq-item" data-search="seo audit puppeteer headless chrome automation"> 416 <button class="faq-question"> 417 <h3><span class="tag">23</span> Headless Chrome for SEO Audits</h3> 418 <span class="icon">+</span> 419 </button> 420 <div class="faq-answer"> 421 <p style="padding: 0 25px 10px;">Automate technical audits for your sites using a containerized browser.</p> 422 <div class="code-block"> 423 <button class="copy-btn">Copy</button> 424 <pre><code class="language-bash">docker run -d --name seo-bot -p 3000:3000 alekzonder/puppeteer-renderer</code></pre> 425 </div> 426 </div> 427 </div> 428 429 <div class="faq-item" data-search="mongodb nosql database"> 430 <button class="faq-question"> 431 <h3><span class="tag">24</span> Deploying MongoDB (NoSQL)</h3>
432 <span class="icon">+</span> 433 </button> 434 <div class="faq-answer"> 435 <div class="code-block"> 436 <button class="copy-btn">Copy</button> 437 <pre><code class="language-bash">docker run -d --name mongodb -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=pass mongo</code></pre> 438 </div> 439 </div> 440 </div> 441 442 <div class="faq-item" data-search="monitoring uptime kuma status page"> 443 <button class="faq-question"> 444 <h3><span class="tag">25</span> Uptime Kuma Monitoring</h3> 445 <span class="icon">+</span> 446 </button> 447 <div class="faq-answer"> 448 <p style="padding: 0 25px 10px;">Monitor your websites (eSIMFree.org, iRegister.al) and get alerts if they go down.</p> 449 <div class="code-block"> 450 <button class="copy-btn">Copy</button> 451 <pre><code class="language-bash">docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1</code></pre> 452 </div> 453 </div> 454 </div> 455 456 <div class="faq-item" data-search="cron jobs automation task scheduler"> 457 <button class="faq-question"> 458 <h3><span class="tag">26</span> Dockerized Cron Tasks</h3> 459 <span class="icon">+</span> 460 </button> 461 <div class="faq-answer"> 462 <p style="padding: 0 25px 10px;">Run scheduled scripts inside a container using Crontab.</p> 463 <div class="code-block"> 464 <pre><code class="language-docker"># Dockerfile snippet 465RUN apt-get update && apt-get install cron -y 466COPY my-cron /etc/cron.d/my-cron 467RUN crontab /etc/cron.d/my-cron 468CMD ["cron", "-f"]</code></pre> 469 </div> 470 </div> 471 </div> 472 473 <div class="faq-item" data-search="hugo jekyll static site generator"> 474 <button class="faq-question"> 475 <h3><span class="tag">27</span> Hugo Static Site Generator</h3> 476 <span class="icon">+</span> 477 </button> 478 <div class="faq-answer"> 479 <div class="code-block"> 480 <button class="copy-btn">Copy</button> 481 <pre><code class="language-bash">docker run --rm -v $(pwd):/src klakegg/hugo:ext-alpine</code></pre> 482 </div> 483 </div> 484 </div> 485 486 <div class="faq-item" data-search="pihole dns adblock network security"> 487 <button class="faq-question"> 488 <h3><span class="tag">28</span> Pi-hole: Network-wide Ad Blocking</h3> 489 <span class="icon">+</span> 490 </button> 491 <div class="faq-answer"> 492 <div class="code-block"> 493 <button class="copy-btn">Copy</button> 494 <pre><code class="language-bash">docker run -d --name pihole -p 53:53/tcp -p 53:53/udp -p 80:80 -e TZ="Europe/Tirane" -v "$(pwd)/etc-pihole:/etc/pihole" pihole/pihole:latest</code></pre> 495 </div> 496 </div> 497 </div> 498 499 <div class="faq-item" data-search="nextcloud cloud storage file sharing"> 500 <button class="faq-question"> 501 <h3><span class="tag">29</span> Private Cloud: Nextcloud</h3> 502 <span class="icon">+</span> 503 </button> 504 <div class="faq-answer"> 505 <p style="padding: 0 25px 10px;">Self-host your own Google Drive alternative.</p> 506 <div class="code-block"> 507 <button class="copy-btn">Copy</button> 508 <pre><code class="language-bash">docker run -d -p 8080:80 -v nextcloud:/var/www/html nextcloud</code></pre> 509 </div> 510 </div> 511 </div> 512 513 <div class="faq-item" data-search="jupyter python data science notebook"> 514 <button class="faq-question"> 515 <h3><span class="tag">30</span> Jupyter Notebook Data Lab</h3>
516 <span class="icon">+</span> 517 </button> 518 <div class="faq-answer"> 519 <div class="code-block"> 520 <button class="copy-btn">Copy</button> 521 <pre><code class="language-bash">docker run -d -p 8888:8888 jupyter/base-notebook</code></pre> 522 </div> 523 </div> 524 </div> 525 526 <div class="faq-item" data-search="ghost cms blog publication"> 527 <button class="faq-question"> 528 <h3><span class="tag">31</span> Ghost CMS Deployment</h3> 529 <span class="icon">+</span> 530 </button> 531 <div class="faq-answer"> 532 <div class="code-block"> 533 <button class="copy-btn">Copy</button> 534 <pre><code class="language-bash">docker run -d --name my-ghost -p 2368:2368 ghost</code></pre> 535 </div> 536 </div> 537 </div> 538 539 <div class="faq-item" data-search="password manager bitwarden vaultwarden security"> 540 <button class="faq-question"> 541 <h3><span class="tag">32</span> Private Password Vault</h3> 542 <span class="icon">+</span> 543 </button> 544 <div class="faq-answer"> 545 <p style="padding: 0 25px 10px;">Securely store all your site credentials on your own server.</p> 546 <div class="code-block"> 547 <button class="copy-btn">Copy</button> 548 <pre><code class="language-bash">docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest</code></pre> 549 </div> 550 </div> 551 </div> 552 553 <div class="faq-item" data-search="postfix mail server smtp relay"> 554 <button class="faq-question"> 555 <h3><span class="tag">33</span> SMTP Relay Server</h3> 556 <span class="icon">+</span> 557 </button> 558 <div class="faq-answer"> 559 <p style="padding: 0 25px 10px;">Configure a simple SMTP relay for sending system notifications.</p> 560 <div class="code-block"> 561 <button class="copy-btn">Copy</button> 562 <pre><code class="language-bash">docker run -d -p 25:25 -e SMTP_SERVER=smtp.gmail.com catatnight/postfix</code></pre> 563 </div> 564 </div> 565 </div> 566 567 <div class="faq-item" data-search="gotty web terminal ssh access"> 568 <button class="faq-question"> 569 <h3><span class="tag">34</span> GoTTY: Terminal via Web</h3> 570 <span class="icon">+</span> 571 </button> 572 <div class="faq-answer"> 573 <p style="padding: 0 25px 10px;">Access your VPS shell through any web browser securely.</p> 574 <div class="code-block"> 575 <button class="copy-btn">Copy</button> 576 <pre><code class="language-bash">docker run -it -p 8080:8080 dit4c/gotty-base</code></pre> 577 </div> 578 </div> 579 </div> 580 581 <div class="faq-item" data-search="search engine meilisearch algolia alternative"> 582 <button class="faq-question"> 583 <h3><span class="tag">35</span> Ultra-fast Search Engine</h3> 584 <span class="icon">+</span> 585 </button> 586 <div class="faq-answer"> 587 <p style="padding: 0 25px 10px;">Add a high-speed search bar to your websites like eSIMFree.</p> 588 <div class="code-block"> 589 <button class="copy-btn">Copy</button> 590 <pre><code class="language-bash">docker run -d -p 7700:7700 getmeili/meilisearch:latest</code></pre> 591 </div> 592 </div> 593 </div> 594 595 <div class="faq-item" data-search="gitea git github alternative self hosted"> 596 <button class="faq-question"> 597 <h3><span class="tag">36</span> Self-hosted Git: Gitea</h3>
598 <span class="icon">+</span> 599 </button> 600 <div class="faq-answer"> 601 <div class="code-block"> 602 <button class="copy-btn">Copy</button> 603 <pre><code class="language-bash">docker run -d --name gitea -p 3000:3000 -p 222:22 gitea/gitea:latest</code></pre> 604 </div> 605 </div> 606 </div> 607 608 <div class="faq-item" data-search="webdav server file transfer"> 609 <button class="faq-question"> 610 <h3><span class="tag">37</span> Secure WebDAV File Server</h3> 611 <span class="icon">+</span> 612 </button> 613 <div class="faq-answer"> 614 <div class="code-block"> 615 <button class="copy-btn">Copy</button> 616 <pre><code class="language-bash">docker run -d -p 80:80 -v /data:/var/lib/dav/data bytemark/webdav</code></pre> 617 </div> 618 </div> 619 </div> 620 621 <div class="faq-item" data-search="jenkins automation ci cd build server"> 622 <button class="faq-question"> 623 <h3><span class="tag">38</span> Jenkins CI/CD Automation</h3> 624 <span class="icon">+</span> 625 </button> 626 <div class="faq-answer"> 627 <div class="code-block"> 628 <button class="copy-btn">Copy</button> 629 <pre><code class="language-bash">docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts</code></pre> 630 </div> 631 </div> 632 </div> 633 634 <div class="faq-item" data-search="appsmith low code internal tools"> 635 <button class="faq-question"> 636 <h3><span class="tag">39</span> Build Internal Tools: Appsmith</h3> 637 <span class="icon">+</span> 638 </button> 639 <div class="faq-answer"> 640 <p style="padding: 0 25px 10px;">Build custom admin dashboards for your sites quickly.</p> 641 <div class="code-block"> 642 <button class="copy-btn">Copy</button> 643 <pre><code class="language-bash">docker run -d --name appsmith -p 80:80 -v "$(pwd)/stacks:/appsmith-stacks" appsmith/appsmith-ce</code></pre> 644 </div> 645 </div> 646 </div> 647 648 <div class="faq-item" data-search="security audit bench hardening"> 649 <button class="faq-question"> 650 <h3><span class="tag">40</span> Docker Bench for Security</h3> 651 <span class="icon">+</span> 652 </button> 653 <div class="faq-answer"> 654 <p style="padding: 0 25px 10px;">Run an automated script that checks for dozens of common best-practices around deploying Docker in production.</p> 655 <div class="code-block"> 656 <button class="copy-btn">Copy</button> 657 <pre><code class="language-bash">docker run --rm -it --net host --pid host --userns host --cap-add net_admin --security-opt seccomp=unconfined \ 658 -v /etc:/etc:ro -v /usr/bin/docker-containerd:/usr/bin/docker-containerd:ro -v /usr/bin/docker-runc:/usr/bin/docker-runc:ro \ 659 -v /usr/lib/systemd:/usr/lib/systemd:ro -v /var/lib/docker:/var/lib/docker:ro -v /var/run/docker.sock:/var/run/docker.sock:ro \ 660 --label docker_bench_security docker/docker-bench-security</code></pre> 661 </div> 662 </div> 663 </div> 664 <div class="faq-item" data-search="grafana dashboard metrics visualization"> 665 <button class="faq-question"> 666 <h3><span class="tag">41</span> Grafana: Analytics & Monitoring</h3> 667 <span class="icon">+</span> 668 </button> 669 <div class="faq-answer"> 670 <p style="padding: 0 25px 10px;">Visualize your VPS metrics with beautiful, real-time dashboards.</p> 671 <div class="code-block"> 672 <button class="copy-btn">Copy</button> 673 <pre><code class="language-bash">docker run -d --name=grafana -p 3000:3000 grafana/grafana</code></pre> 674 </div> 675 </div> 676 </div> 677 678 <div class="faq-item" data-search="graylog logging management elasticsearch"> 679 <button class="faq-question"> 680 <h3><span class="tag">42</span> Graylog Centralized Logging</h3>
681 <span class="icon">+</span> 682 </button> 683 <div class="faq-answer"> 684 <p style="padding: 0 25px 10px;">A powerful platform for managing and searching through gigabytes of container logs.</p> 685 <div class="code-block"> 686 <button class="copy-btn">Copy</button> 687 <pre><code class="language-bash">docker run -d --name graylog -p 9000:9000 -p 12201:12201/udp graylog/graylog:5.0</code></pre> 688 </div> 689 </div> 690 </div> 691 692 <div class="faq-item" data-search="influxdb time series database iot"> 693 <button class="faq-question"> 694 <h3><span class="tag">43</span> InfluxDB: Time Series Data</h3> 695 <span class="icon">+</span> 696 </button> 697 <div class="faq-answer"> 698 <div class="code-block"> 699 <button class="copy-btn">Copy</button> 700 <pre><code class="language-bash">docker run -d -p 8086:8086 --name influxdb influxdb:latest</code></pre> 701 </div> 702 </div> 703 </div> 704 705 <div class="faq-item" data-search="rabbitmq message broker amqp queue"> 706 <button class="faq-question"> 707 <h3><span class="tag">44</span> RabbitMQ: Message Queuing</h3> 708 <span class="icon">+</span> 709 </button> 710 <div class="faq-answer"> 711 <p style="padding: 0 25px 10px;">Scale your application logic with a reliable message broker.</p> 712 <div class="code-block"> 713 <button class="copy-btn">Copy</button> 714 <pre><code class="language-bash">docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management</code></pre> 715 </div> 716 </div> 717 </div> 718 719 <div class="faq-item" data-search="elasticsearch search analytics elk"> 720 <button class="faq-question"> 721 <h3><span class="tag">45</span> ElasticSearch Search Engine</h3> 722 <span class="icon">+</span> 723 </button> 724 <div class="faq-answer"> 725 <p style="padding: 0 25px 10px;">Deploy the world's most popular search and analytics engine.</p> 726 <div class="code-block"> 727 <button class="copy-btn">Copy</button> 728 <pre><code class="language-bash">docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.0.0</code></pre> 729 </div> 730 </div> 731 </div> 732 733 <div class="faq-item" data-search="kibana elasticsearch dashboard elk"> 734 <button class="faq-question"> 735 <h3><span class="tag">46</span> Kibana: Visualizing Elastic</h3> 736 <span class="icon">+</span> 737 </button> 738 <div class="faq-answer"> 739 <div class="code-block"> 740 <button class="copy-btn">Copy</button> 741 <pre><code class="language-bash">docker run -d --name kibana --link elasticsearch:elasticsearch -p 5601:5601 kibana:8.0.0</code></pre> 742 </div> 743 </div> 744 </div> 745 746 <div class="faq-item" data-search="minio s3 object storage private cloud"> 747 <button class="faq-question"> 748 <h3><span class="tag">47</span> MinIO: Self-Hosted S3</h3> 749 <span class="icon">+</span> 750 </button> 751 <div class="faq-answer"> 752 <p style="padding: 0 25px 10px;">Create your own AWS S3-compatible object storage on your VPS.</p> 753 <div class="code-block"> 754 <button class="copy-btn">Copy</button> 755 <pre><code class="language-bash">docker run -d -p 9000:9000 -p 9001:9001 --name minio -v /mnt/data:/data minio/minio server /data --console-address ":9001"</code></pre> 756 </div> 757 </div> 758 </div> 759 760 <div class="faq-item" data-search="kafka stream processing event driven"> 761 <button class="faq-question"> 762 <h3><span class="tag">48</span> Apache Kafka: Event Streaming</h3>
763 <span class="icon">+</span> 764 </button> 765 <div class="faq-answer"> 766 <div class="code-block"> 767 <button class="copy-btn">Copy</button> 768 <pre><code class="language-bash">docker run -d --name kafka -p 9092:9092 apache/kafka:latest</code></pre> 769 </div> 770 </div> 771 </div> 772 773 <div class="faq-item" data-search="memcached caching database performance"> 774 <button class="faq-question"> 775 <h3><span class="tag">49</span> Memcached: Object Caching</h3> 776 <span class="icon">+</span> 777 </button> 778 <div class="faq-answer"> 779 <div class="code-block"> 780 <button class="copy-btn">Copy</button> 781 <pre><code class="language-bash">docker run -d --name memcached -p 11211:11211 memcached:alpine</code></pre> 782 </div> 783 </div> 784 </div> 785 786 <div class="faq-item" data-search="gitlab runner cicd automation"> 787 <button class="faq-question"> 788 <h3><span class="tag">50</span> GitLab CI/CD Runner</h3> 789 <span class="icon">+</span> 790 </button> 791 <div class="faq-answer"> 792 <p style="padding: 0 25px 10px;">Host your own GitLab runner to execute private CI/CD pipelines.</p> 793 <div class="code-block"> 794 <button class="copy-btn">Copy</button> 795 <pre><code class="language-bash">docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest</code></pre> 796 </div> 797 </div> 798 </div> 799 800 <div class="faq-item" data-search="traefik reverse proxy cloud native edge"> 801 <button class="faq-question"> 802 <h3><span class="tag">51</span> Traefik: Edge Router Proxy</h3> 803 <span class="icon">+</span> 804 </button> 805 <div class="faq-answer"> 806 <p style="padding: 0 25px 10px;">The industry standard for cloud-native dynamic reverse proxying.</p> 807 808 <div class="code-block"> 809 <button class="copy-btn">Copy</button> 810 <pre><code class="language-bash">docker run -d -p 8080:8080 -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock traefik:v2.10</code></pre> 811 </div> 812 </div> 813 </div> 814 815 <div class="faq-item" data-search="couchdb nosql sync database"> 816 <button class="faq-question"> 817 <h3><span class="tag">52</span> CouchDB: NoSQL with Sync</h3> 818 <span class="icon">+</span> 819 </button> 820 <div class="faq-answer"> 821 <div class="code-block"> 822 <button class="copy-btn">Copy</button> 823 <pre><code class="language-bash">docker run -d --name couchdb -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=pass couchdb:latest</code></pre> 824 </div> 825 </div> 826 </div> 827 828 <div class="faq-item" data-search="vault secrets encryption security hashicorp"> 829 <button class="faq-question"> 830 <h3><span class="tag">53</span> HashiCorp Vault: Secret Mgmt</h3> 831 <span class="icon">+</span> 832 </button> 833 <div class="faq-answer"> 834 <p style="padding: 0 25px 10px;">Secure, store, and tightly control access to tokens, passwords, and certificates.</p> 835 <div class="code-block"> 836 <button class="copy-btn">Copy</button> 837 <pre><code class="language-bash">docker run -d --name vault -p 8200:8200 hashicorp/vault</code></pre> 838 </div> 839 </div> 840 </div> 841
842 <div class="faq-item" data-search="metabase bi analytics dashboard sql"> 843 <button class="faq-question"> 844 <h3><span class="tag">54</span> Metabase: Business Intelligence</h3> 845 <span class="icon">+</span> 846 </button> 847 <div class="faq-answer"> 848 <p style="padding: 0 25px 10px;">The fastest way to share data and analytics inside your company.</p> 849 <div class="code-block"> 850 <button class="copy-btn">Copy</button> 851 <pre><code class="language-bash">docker run -d -p 3000:3000 --name metabase metabase/metabase</code></pre> 852 </div> 853 </div> 854 </div> 855 856 <div class="faq-item" data-search="verdaccio npm private registry nodejs"> 857 <button class="faq-question"> 858 <h3><span class="tag">55</span> Verdaccio: Private NPM Proxy</h3> 859 <span class="icon">+</span> 860 </button> 861 <div class="faq-answer"> 862 <div class="code-block"> 863 <button class="copy-btn">Copy</button> 864 <pre><code class="language-bash">docker run -d --name verdaccio -p 4873:4873 verdaccio/verdaccio</code></pre> 865 </div> 866 </div> 867 </div> 868 869 <div class="faq-item" data-search="sonarqube code quality static analysis"> 870 <button class="faq-question"> 871 <h3><span class="tag">56</span> SonarQube: Code Quality</h3> 872 <span class="icon">+</span> 873 </button> 874 <div class="faq-answer"> 875 <p style="padding: 0 25px 10px;">Automated code review for security and code smell detection.</p> 876 <div class="code-block"> 877 <button class="copy-btn">Copy</button> 878 <pre><code class="language-bash">docker run -d --name sonarqube -p 9000:9000 sonarqube:lts-community</code></pre> 879 </div> 880 </div> 881 </div> 882 883 <div class="faq-item" data-search="supabase firebase alternative backend"> 884 <button class="faq-question"> 885 <h3><span class="tag">57</span> Supabase: Local Backend</h3> 886 <span class="icon">+</span> 887 </button> 888 <div class="faq-answer"> 889 <p style="padding: 0 25px 10px;">Self-host the Open Source Firebase alternative for your mobile apps.</p> 890 <div class="code-block"> 891 <button class="copy-btn">Copy</button> 892 <pre><code class="language-bash">docker run -d --name supabase-db -p 5432:5432 supabase/postgres:latest</code></pre> 893 </div> 894 </div> 895 </div> 896 897 <div class="faq-item" data-search="directus headless cms backend api"> 898 <button class="faq-question"> 899 <h3><span class="tag">58</span> Directus: Instant API & CMS</h3> 900 <span class="icon">+</span> 901 </button> 902 <div class="faq-answer"> 903 <div class="code-block"> 904 <button class="copy-btn">Copy</button> 905 <pre><code class="language-bash">docker run -d -p 8055:8055 directus/directus:latest</code></pre> 906 </div> 907 </div> 908 </div> 909 910 <div class="faq-item" data-search="n8n zapier alternative workflow automation"> 911 <button class="faq-question"> 912 <h3><span class="tag">59</span> N8N: Low-Code Automation</h3> 913 <span class="icon">+</span> 914 </button> 915 <div class="faq-answer"> 916 <p style="padding: 0 25px 10px;">Self-host your workflow automation. A powerful open-source Zapier alternative.</p> 917 <div class="code-block"> 918 <button class="copy-btn">Copy</button> 919 <pre><code class="language-bash">docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n</code></pre> 920 </div> 921 </div> 922 </div> 923 924 <div class="faq-item" data-search="keycloak sso oidc identity management security"> 925 <button class="faq-question"> 926 <h3><span class="tag">60</span> Keycloak: Identity & Access</h3>
927 <span class="icon">+</span> 928 </button> 929 <div class="faq-answer"> 930 <p style="padding: 0 25px 10px;">Centralized Single Sign-On (SSO) for your applications.</p> 931 <div class="code-block"> 932 <button class="copy-btn">Copy</button> 933 <pre><code class="language-bash">docker run -d --name keycloak -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=pass quay.io/keycloak/keycloak:latest start-dev</code></pre> 934 </div> 935 </div> 936 </div> 937 938 </div> 939 </main> 940 941 <div class="sponsor-box"> 942 <p>Proudly sponsored by <strong><a href="https://gratisvps.net" target="_blank" style="color:var(--primary-color); text-decoration:none;">GratisVPS</a></strong></p> 943 <p style="font-size: 0.85rem; color: #777; margin-top: 10px;">The best <strong><a href="https://gratisvps.net" target="_blank" style="color:#555; text-decoration:none;">free vps hosting</a></strong> for modern developers.</p> 944 </div> 945 946 <footer class="footer"> 947 <p>© 2026 FreeVPS.edu.pl. Built for high performance.</p> 948 </footer> 949 950
950<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
950 951
951<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script>
951 952
952<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-yaml.min.js"></script>
952 953
953<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-docker.min.js"></script>
953 954 955
955<script> 956 // Search Filter 957 const searchInput = document.getElementById('tutorialSearch'); 958 const faqItems = document.querySelectorAll('.faq-item'); 959 960 searchInput.addEventListener('input', (e) => { 961 const term = e.target.value.toLowerCase(); 962 faqItems.forEach(item => { 963 const searchData = item.getAttribute('data-search').toLowerCase(); 964 const title = item.querySelector('h3').innerText.toLowerCase(); 965 if (searchData.includes(term) || title.includes(term)) { 966 item.style.display = 'block'; 967 } else { 968 item.style.display = 'none'; 969 } 970 }); 971 }); 972 973 // Accordion Logic 974 document.querySelectorAll('.faq-question').forEach(button => { 975 button.addEventListener('click', () => { 976 const item = button.parentElement; 977 item.classList.toggle('active'); 978 const answer = item.querySelector('.faq-answer'); 979 if (item.classList.contains('active')) { 980 answer.style.maxHeight = answer.scrollHeight + "px"; 981 } else { 982 answer.style.maxHeight = 0; 983 } 984 }); 985 }); 986 987 // Copy Clipboard 988 document.querySelectorAll('.copy-btn').forEach(btn => { 989 btn.addEventListener('click', () => { 990 const code = btn.nextElementSibling.querySelector('code').innerText; 991 navigator.clipboard.writeText(code); 992 btn.textContent = 'Copied!'; 993 setTimeout(() => { btn.textContent = 'Copy'; }, 2000); 994 }); 995 }); 996 </script>
vendor: 2 bytes, line 996
996
997<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4596a82dc50b0fc',t:'MTc5MTE3MTc0Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
997<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"f0f2ca4980f44a16bd3f1fee1aa4d6c7","r":1,"spa":2}' crossorigin="anonymous"></script>
997 998</body> 999</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.