{"id":136,"date":"2025-05-26T19:13:08","date_gmt":"2025-05-26T17:13:08","guid":{"rendered":"https:\/\/netcloud24.com\/pl\/blog\/?p=136"},"modified":"2025-05-26T19:13:28","modified_gmt":"2025-05-26T17:13:28","slug":"instalacja-wondercms-na-debianie-12-z-letsencrypt","status":"publish","type":"post","link":"https:\/\/netcloud24.com\/pl\/blog\/instalacja-wondercms-na-debianie-12-z-letsencrypt\/","title":{"rendered":"Instalacja WonderCMS na Debianie 12 z Letsencrypt"},"content":{"rendered":"<h1><\/h1>\n<div class=\"note\">\n<p>WonderCMS to lekki, bezbazowy system CMS napisany w PHP. Ten poradnik pokazuje jak zainstalowa\u0107 go na Debianie 12 z certyfikatem SSL od Letsencrypt na trzy r\u00f3\u017cne sposoby.<\/p>\n<\/div>\n<h2>Wymagania wst\u0119pne<\/h2>\n<ul>\n<li>Serwer z Debianem 12<\/li>\n<li>Dost\u0119p do konta root lub u\u017cytkownika z uprawnieniami sudo<\/li>\n<li>Zarejestrowana domena wskazuj\u0105ca na IP serwera<\/li>\n<\/ul>\n<h2>1. Instalacja manualna<\/h2>\n<h3>1.1. Aktualizacja systemu i instalacja wymaganych pakiet\u00f3w<\/h3>\n<pre><code>sudo apt update &amp;&amp; sudo apt upgrade -y\r\nsudo apt install -y apache2 php php-curl php-zip unzip certbot python3-certbot-apache<\/code><\/pre>\n<h3>1.2. Pobranie i rozpakowanie WonderCMS<\/h3>\n<pre><code>wget https:\/\/github.com\/robiso\/wondercms\/releases\/latest\/download\/WonderCMS.zip\r\nunzip WonderCMS.zip -d \/var\/www\/wondercms\r\nsudo chown -R www-data:www-data \/var\/www\/wondercms\r\nsudo chmod -R 755 \/var\/www\/wondercms<\/code><\/pre>\n<h3>1.3. Konfiguracja Apache<\/h3>\n<p>Utw\u00f3rz plik konfiguracyjny:<\/p>\n<pre><code>sudo nano \/etc\/apache2\/sites-available\/wondercms.conf<\/code><\/pre>\n<p>Dodaj nast\u0119puj\u0105c\u0105 zawarto\u015b\u0107 (zamie\u0144 <code>twojadomena.pl<\/code> na swoj\u0105 domen\u0119):<\/p>\n<pre><code>&lt;VirtualHost *:80&gt;\r\n    ServerName twojadomena.pl\r\n    ServerAlias www.twojadomena.pl\r\n    DocumentRoot \/var\/www\/wondercms\r\n    \r\n    &lt;Directory \/var\/www\/wondercms&gt;\r\n        Options FollowSymlinks\r\n        AllowOverride All\r\n        Require all granted\r\n    &lt;\/Directory&gt;\r\n    \r\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\r\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\r\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n<p>Aktywuj konfiguracj\u0119:<\/p>\n<pre><code>sudo a2ensite wondercms.conf\r\nsudo a2enmod rewrite\r\nsudo systemctl restart apache2<\/code><\/pre>\n<h3>1.4. Instalacja certyfikatu SSL z Letsencrypt<\/h3>\n<pre><code>sudo certbot --apache -d twojadomena.pl -d www.twojadomena.pl<\/code><\/pre>\n<p>Post\u0119puj zgodnie z instrukcjami wy\u015bwietlanymi na ekranie. Certybot automatycznie zaktualizuje konfiguracj\u0119 Apache.<\/p>\n<h3>1.5. Zako\u0144czenie instalacji<\/h3>\n<p>Otw\u00f3rz w przegl\u0105darce swoj\u0105 domen\u0119 (https:\/\/twojadomena.pl) i post\u0119puj zgodnie z instrukcjami instalacyjnymi WonderCMS.<\/p>\n<h2>2. Instalacja za pomoc\u0105 Dockera<\/h2>\n<h3>2.1. Instalacja Dockera<\/h3>\n<pre><code>sudo apt update\r\nsudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common\r\ncurl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | sudo gpg --dearmor -o \/usr\/share\/keyrings\/docker-archive-keyring.gpg\r\necho \"deb [arch=amd64 signed-by=\/usr\/share\/keyrings\/docker-archive-keyring.gpg] https:\/\/download.docker.com\/linux\/debian $(lsb_release -cs) stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null\r\nsudo apt update\r\nsudo apt install -y docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n<h3>2.2. Pobranie obrazu WonderCMS<\/h3>\n<pre><code>sudo docker pull wondercms\/wondercms<\/code><\/pre>\n<h3>2.3. Uruchomienie kontenera<\/h3>\n<pre><code>sudo docker run -d \\\r\n    --name wondercms \\\r\n    -p 8080:80 \\\r\n    -v \/var\/wondercms:\/var\/www\/html \\\r\n    -e APACHE_RUN_USER=#1000 \\\r\n    -e APACHE_RUN_GROUP=#1000 \\\r\n    wondercms\/wondercms<\/code><\/pre>\n<h3>2.4. Konfiguracja reverse proxy z Nginx i Letsencrypt<\/h3>\n<p>Instalacja Nginx i Certbota:<\/p>\n<pre><code>sudo apt install -y nginx certbot python3-certbot-nginx<\/code><\/pre>\n<p>Konfiguracja Nginx (utw\u00f3rz plik <code>\/etc\/nginx\/sites-available\/wondercms<\/code>):<\/p>\n<pre><code>server {\r\n    listen 80;\r\n    server_name twojadomena.pl www.twojadomena.pl;\r\n    \r\n    location \/ {\r\n        proxy_pass http:\/\/localhost:8080;\r\n        proxy_set_header Host $host;\r\n        proxy_set_header X-Real-IP $remote_addr;\r\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header X-Forwarded-Proto $scheme;\r\n    }\r\n}<\/code><\/pre>\n<p>Aktywuj konfiguracj\u0119 i uzyskaj certyfikat:<\/p>\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/wondercms \/etc\/nginx\/sites-enabled\/\r\nsudo nginx -t\r\nsudo systemctl reload nginx\r\nsudo certbot --nginx -d twojadomena.pl -d www.twojadomena.pl<\/code><\/pre>\n<h2>3. Instalacja za pomoc\u0105 Ansible<\/h2>\n<h3>3.1. Instalacja Ansible<\/h3>\n<pre><code>sudo apt update\r\nsudo apt install -y ansible<\/code><\/pre>\n<h3>3.2. Przygotowanie playbooka<\/h3>\n<p>Utw\u00f3rz plik <code>wondercms.yml<\/code>:<\/p>\n<pre><code>---\r\n- hosts: all\r\n  become: yes\r\n  vars:\r\n    domain: \"twojadomena.pl\"\r\n    www_root: \"\/var\/www\/wondercms\"\r\n    \r\n  tasks:\r\n    - name: Update system\r\n      apt:\r\n        update_cache: yes\r\n        upgrade: dist\r\n        \r\n    - name: Install required packages\r\n      apt:\r\n        name: \"{{ item }}\"\r\n        state: present\r\n      loop:\r\n        - apache2\r\n        - php\r\n        - php-curl\r\n        - php-zip\r\n        - unzip\r\n        - certbot\r\n        - python3-certbot-apache\r\n        \r\n    - name: Download WonderCMS\r\n      get_url:\r\n        url: https:\/\/github.com\/robiso\/wondercms\/releases\/latest\/download\/WonderCMS.zip\r\n        dest: \/tmp\/WonderCMS.zip\r\n        \r\n    - name: Create web directory\r\n      file:\r\n        path: \"{{ www_root }}\"\r\n        state: directory\r\n        mode: '0755'\r\n        \r\n    - name: Unzip WonderCMS\r\n      unarchive:\r\n        src: \/tmp\/WonderCMS.zip\r\n        dest: \"{{ www_root }}\"\r\n        remote_src: yes\r\n        \r\n    - name: Set permissions\r\n      file:\r\n        path: \"{{ www_root }}\"\r\n        owner: www-data\r\n        group: www-data\r\n        recurse: yes\r\n        \r\n    - name: Configure Apache\r\n      template:\r\n        src: wondercms.conf.j2\r\n        dest: \/etc\/apache2\/sites-available\/wondercms.conf\r\n      notify:\r\n        - restart apache\r\n        \r\n    - name: Enable site and mod_rewrite\r\n      shell: |\r\n        a2ensite wondercms.conf\r\n        a2enmod rewrite\r\n        \r\n    - name: Get SSL certificate\r\n      command: certbot --apache --non-interactive --agree-tos --email admin@{{ domain }} -d {{ domain }} -d www.{{ domain }}\r\n      \r\n  handlers:\r\n    - name: restart apache\r\n      service:\r\n        name: apache2\r\n        state: restarted<\/code><\/pre>\n<p>Utw\u00f3rz plik szablonu <code>wondercms.conf.j2<\/code>:<\/p>\n<pre><code>&lt;VirtualHost *:80&gt;\r\n    ServerName {{ domain }}\r\n    ServerAlias www.{{ domain }}\r\n    DocumentRoot {{ www_root }}\r\n    \r\n    &lt;Directory {{ www_root }}&gt;\r\n        Options FollowSymlinks\r\n        AllowOverride All\r\n        Require all granted\r\n    &lt;\/Directory&gt;\r\n    \r\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\r\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\r\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n<h3>3.3. Uruchomienie playbooka<\/h3>\n<pre><code>ansible-playbook -i \"localhost,\" -c local wondercms.yml<\/code><\/pre>\n<div class=\"note\">\n<p>Powy\u017cszy playbook mo\u017cna r\u00f3wnie\u017c uruchomi\u0107 na zdalnym ho\u015bcie, modyfikuj\u0105c odpowiednio inventory.<\/p>\n<\/div>\n<h2>Podsumowanie<\/h2>\n<p>WonderCMS to doskona\u0142y wyb\u00f3r dla os\u00f3b poszukuj\u0105cych lekkiego, \u0142atwego w obs\u0142udze systemu CMS. Dzi\u0119ki temu poradnikowi masz trzy r\u00f3\u017cne metody instalacji na Debianie 12 z certyfikatem SSL od Letsencrypt:<\/p>\n<ol>\n<li>Instalacja manualna &#8211; dobra do nauki i pe\u0142nej kontroli<\/li>\n<li>Docker &#8211; idealny dla \u015brodowisk konteneryzowanych<\/li>\n<li>Ansible &#8211; doskona\u0142y do automatyzacji i zarz\u0105dzania konfiguracj\u0105<\/li>\n<\/ol>\n<div class=\"warning\">\n<p><strong>Wa\u017cne:<\/strong> Po instalacji pami\u0119taj o:<\/p>\n<ul>\n<li>Zmianie domy\u015blnego has\u0142a administratora<\/li>\n<li>Regularnym tworzeniu kopii zapasowych<\/li>\n<li>Aktualizacji WonderCMS do najnowszej wersji<\/li>\n<\/ul>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WonderCMS to lekki, bezbazowy system CMS napisany w PHP. Ten poradnik pokazuje jak zainstalowa\u0107 go na Debianie 12 z certyfikatem SSL od Letsencrypt na trzy\u2026<\/p>\n","protected":false},"author":1,"featured_media":137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":1,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":138,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions\/138"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/media\/137"}],"wp:attachment":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}