{"id":25836926,"url":"https://github.com/oliguo/docker-traefik-lampp","last_synced_at":"2025-03-01T02:42:52.311Z","repository":{"id":89814128,"uuid":"187490795","full_name":"oliguo/Docker-Traefik-Lampp","owner":"oliguo","description":"Building the Lampp(alpine-apache-mysql-php-phpmyadmin) with  Traefik(v1.7.11 / v2.6) ","archived":false,"fork":false,"pushed_at":"2024-07-30T06:50:31.000Z","size":214,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-30T09:43:59.134Z","etag":null,"topics":["alpine","backend","docker","docker-compose","frontend","lampp","mysql","php","phpmyadmin","traefik"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oliguo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-19T14:58:28.000Z","updated_at":"2024-07-30T06:50:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"14d95fb0-e629-447e-8e08-8027167ac6cc","html_url":"https://github.com/oliguo/Docker-Traefik-Lampp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliguo%2FDocker-Traefik-Lampp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliguo%2FDocker-Traefik-Lampp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliguo%2FDocker-Traefik-Lampp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliguo%2FDocker-Traefik-Lampp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oliguo","download_url":"https://codeload.github.com/oliguo/Docker-Traefik-Lampp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241309105,"owners_count":19941725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","backend","docker","docker-compose","frontend","lampp","mysql","php","phpmyadmin","traefik"],"created_at":"2025-03-01T02:42:51.764Z","updated_at":"2025-03-01T02:42:52.303Z","avatar_url":"https://github.com/oliguo.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Step 1\n\n### Run update and upgrade firstly when new ubuntu[18.04] created\n\n```\napt-get update \u0026 apt-get upgrade\n```\n\n### Add library\n\n```\nsudo apt-get install \\\n    apt-transport-https \\\n    ca-certificates \\\n    curl \\\n    gnupg-agent \\\n    software-properties-common\n\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg\n\necho \\\n  \"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \\\n  $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n   \napt-get update \u0026 apt-get upgrade\n```\n\n### Install docker and others library needed\n\n```\nsudo apt-get install docker-ce docker-ce-cli containerd.io apache2-utils\n```\n\n### Install docker compose\n\n```\nsudo curl -L \"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-compose\nsudo chmod +x /usr/local/bin/docker-compose\nsudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose\n\nsudo dpkg -r --force-depends golang-docker-credential-helpers\n```\n\n### Start / Stop Docker\n\n```\nsudo systemctl start docker / sudo systemctl stop docker\n```\n\n### Enable the auto start service for Docker\n\n```\nsudo systemctl enable docker\n```\n\n### Restart All Container\n```\ndocker restart $(docker ps -q)\n```\n\n# Step 2\n\n### Download the Git files\n\n```\nhttps://github.com/oliguo/Docker-Traefik-Lampp\n```\n\n### Create the root folder for files\n\n```\ncp -r ./Docker-Traefik-Lampp /opt/docker\n```\n\n# Step 3\n\n### Install container manager tool\n\n```\nmkdir -pv /opt/docker/portainer/data\n\ndocker run -d -p 9000:9000 \\\n --name portainer \\\n --restart always \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n -v /opt/docker/portainer/data:/data \\\n portainer/portainer\n```\n\n### Access the portainer by http://ip-adress:9000\n\n# Step 4\n\n### Install FTP individually for file upload\n\n```\nsudo apt-get install proftpd proftpd-basic\n```\n\n### Start / Stop FTP\n\n```\nsudo systemctl start proftpd.service / sudo systemctl stop proftpd.service\n```\n\n### Enable the auto start service for FTP\n\n```\nsudo systemctl enable proftpd.service\n```\n\n### Change config\n\n```\nsudo nano /etc/proftpd/proftpd.conf\n```\n\n### Add the logging under 'SystemLog   /var/log/proftpd/proftpd.log'\n\n```\n#\n# Some logging formats\n#\nLogFormat         default \"%h %l %u %t \\\"%r\\\" %s %b\"\nLogFormat\t\t\t auth \"%v [%P] %h %t \\\"%r\\\" %s\"\nLogFormat\t\t\twrite \"%h %l %u %t \\\"%r\\\" %s %b\"\n# You need to enable mod_logio.c to use %I and %O\nLogFormat combinedio-more \"%v %h %l %u %t \\\"%r\\\" %s %I %O\"\n\n# Logging\n#\n# file/dir access\n#\nExtendedLog\t\t/var/log/proftpd/access.log WRITE,READ combinedio-more\n#\n#\n# Record all logins\n#\nExtendedLog\t\t/var/log/proftpd/auth.log AUTH auth\n```\n\n### Create FTP User and restart Proftpd\n\n```\nsudo mkdir -pv /opt/docker/apps\nsudo mv /opt/docker/alpine-apache-php5 /opt/docker/apps/abc.com\n    or\nsudo mv /opt/docker/alpine-apache-php7 /opt/docker/apps/abc.com\n\nsudo groupadd abc_com_group\nsudo useradd -d /opt/docker/apps/abc.com/www -g abc_com_group -s /sbin/nologin abc_com\nsudo chown -Rv abc_com:abc_com_group /opt/docker/apps/abc.com/www\n\ncat /etc/passwd | grep 'abc_com*'\n\nsudo ftpasswd  --passwd --file=/usr/local/proftpd/ftpd.passwd --name=abc_com  --uid=1000 --gid=1000  --home=/opt/docker/apps/abc.com/www  --shell=/sbin/nologin\n\nsudo vim /etc/proftpd/conf.d/settings.conf\n    DefaultRoot /opt/docker/apps/abc.com/www abc_com_group\n    \u003cDirectory \"/opt/docker/apps/abc.com/www\"\u003e\n        \u003cLimit CWD MKD RNFR READ WRITE STOR RETR\u003e\n            DenyAll\n        \u003c/Limit\u003e\n        \u003cLimit CWD MKD RNFR READ WRITE STOR RETR\u003e\n            AllowUser abc_com\n        \u003c/Limit\u003e\n    \u003c/Directory\u003e\n  \nsudo systemctl restart proftpd.service\n```\n\n\n# Step 5\n\n### Create network manually firstly\n\n```\ndocker network create web\n```\n\n### Build Web application image\n\n```\ncd /opt/docker/abc.com\ndocker build -t alpine-apache-php5 .\nor\ndocker build -t alpine-apache-php7 .\n\n```\n\n### Edit docker-compose by requirement\n\n```\n#traefik v1 version\n/opt/docker/docker-compose.yml\nOr\n#traefik v2.6 version\n/opt/docker/docker-compose.traefik2.yml\n```\n\n## Traefik V1\n\n#### Modify traefik.toml by requirement\n\n```toml\ndefaultEntryPoints = [\"https\",\"http\"]\ndebug = false\nlogLevel = \"INFO\"\n[traefikLog]\n  filePath = \"/opt/traefik/log/traefik.log\"\n  format   = \"json\"\n[accessLog]\n  filePath = \"/opt/traefik/log/access.log\"\n  format = \"json\"\n[file]\n  directory = \"/opt/traefik/rules/\"\n  watch = true\n[entryPoints]\n  [entryPoints.http]\n  address = \":80\"\n    [entryPoints.http.redirect]\n    entryPoint = \"https\"\n  [entryPoints.https]\n  address = \":443\"\n  [entryPoints.https.tls]\n  [[entryPoints.https.tls.certificates]]\n      CertFile = \"/opt/traefik/certs/*.abc.com/fullchain.pem\"\n      KeyFile = \"/opt/traefik/certs/*.abc.com/privkey.pem\"\n  [entryPoints.traefik]\n  address = \":8080\"\n  [entryPoints.traefik.auth]\n    [entryPoints.traefik.auth.basic]\n      users = [\"admin:hash_password\"]\n\n[acme]\nemail = \"abc@abc.com\"\nstorage = \"acme.json\"\nentryPoint = \"https\"\nonHostRule = true\n\n[acme.httpChallenge]\nentryPoint = \"http\"\n\n[docker]\nendpoint = \"unix:///var/run/docker.sock\"\nwatch = true\n```\n\n#### Set password for traefik(v1.7.11) dashbard and update it on the traefik.tml\n\n```\necho $(htpasswd -nb admin 123456)\n```\n\n```\n[entryPoints.traefik.auth]\n    [entryPoints.traefik.auth.basic]\n      users = [\"admin:xxxx\"]\n```\n\n#### Modify redirection rule1.toml by requirement\n\n```toml\n[backends]\n\n[backends.abc001]\n[backends.abc001.servers.server1]\nurl = \"http://123.123.123.123:10001\"\n[backends.abc002]\n[backends.abc002.servers.server1]\nurl = \"http://123.123.123.123:10002\" #point to https part\n\n[frontends]\n\n[frontends.abc001]\nbackend = \"abc001\"\npassHostHeader = true\n[frontends.abc001.routes.route1]\nrule = \"Host:abc001.abc.com\"\n[frontends.abc002]\nbackend = \"abc002\"\npassHostHeader = true\n[frontends.abc002.routes.route1]\nrule = \"Host:abc002.abc.com\"\n```\n\n#### Build and Start all applications by docker-compose\n\n```\nsudo chmod 600 /opt/docker/traefik/acme.json\ncd /opt/docker\ndocker-compose --compatibility  up -d --force-recreate\n```\n\n## Traefik V2.6\n\n#### Modify traefik.toml by requirement\n\n```yml\nproviders:\n  docker: {}\n\nlog:\n  filePath: \"/opt/traefik/logs/traefik.log\"\n  format: json\n  level: INFO\n\n# Configuring a buffer of 100 lines\naccessLog:\n  filePath: \"/opt/traefik/logs/access.log\"\n  format: json\n  bufferingSize: 100\n\napi:\n  # Dashboard\n  #\n  # Optional\n  # Default: true\n  #\n  dashboard: true\n  #insecure: true\n\nentryPoints:\n  web:\n    address: \":80\"\n    #http:\n    #  redirections:\n    #    entryPoint:\n    #      to: websecure\n    #      scheme: https\n\n  websecure:\n    address: \":443\"\n\ncertificatesResolvers:\n  webResolver:\n    acme:\n      email: abc@abc.com\n      storage: /letsencrypt/acme.json\n      httpChallenge:\n        # used during the challenge\n        entryPoint: web\n```\n\n#### Set password for traefik(v2.6) dashbard and update it on the docker-compose.traefik2.yml\n\n```\necho $(htpasswd -nb admin 123456)\n```\n\n```yml\n - \"traefik.http.middlewares.traefik2_auth.basicauth.users=admin:xxx\"\n```\n\n#### Build and Start all applications by docker-compose\n\n```\ncd /opt/docker\ndocker-compose -f docker-compose.traefik2.yml --compatibility  up -d --force-recreate\n```\n\n# Change mysql root password\n\n```\nSET PASSWORD FOR 'root' = PASSWORD('your password');\n\nALTER USER 'root'@'localhost' IDENTIFIED BY 'your password';\n```\n\n\n# Logging by crontab\n\n```\ncrontab -e\n\n##clear traefik log and restart traefik\n0 0 * * 0 rm /where is path/traefik/log/*\n5 0 * * 0 docker restart traefik\n\n##logging the stats per 30mins\n*/30 * * * * docker stats -a --no-stream \u003e\u003e /log folder you created/docker-stats-log/`date +\\%Y\\%m\\%d\\%H\\%M\\%S`.csv\n*/30 * * * * ps auxf \u003e /log folder you created/htop-log/`date +\\%Y\\%m\\%d\\%H\\%M\\%S`.csv\n\n##clear log every sunday\n0 0 * * 0 rm /log folder you created/docker-stats-log/`date +\\%Y\\%m`*.csv\n0 0 * * 0 rm /log folder you created/htop-log/`date +\\%Y\\%m`*.csv\n\n##clear access log last month \n59 23 1 * * * rm /opt/docker/abc.com/log/apache2/access_log.`date --date=\"$(date +\\%m) -1 month\" +\\%Y-\\%m*`\n59 23 1 * * * rm /opt/docker/abc.com/log/apache2/ssl_access_log.`date --date=\"$(date +\\%m) -1 month\" +\\%Y-\\%m*`\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliguo%2Fdocker-traefik-lampp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foliguo%2Fdocker-traefik-lampp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliguo%2Fdocker-traefik-lampp/lists"}