PageSourceSearch

https://freevps.edu.pl/docker-tutorials.php

html freevps.edu.pl collected 2026-10-05 03:42:23 UTC 54,851 bytes, 999 lines download raw bytes

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>&copy; 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.