17 กุมภาพันธ์ 2566

Mikrotik container + adguard + uptime kuma

Mikrotik  v7.7

adguardhome after this version have an error
 
 
/system/device-mode/update container=yes

/container config
set registry-url=https://registry-1.docker.io

/interface bridge
add name=Docker

/ip address
add address=10.0.0.1/24 interface=Docker

/ip firewall nat
add chain=srcnat src-address=10.0.0.0/24 action=masquerade

/interface veth
add address=10.0.0.10/24 gateway=10.0.0.1 name=veth-adguard

/interface bridge port
add bridge=Docker interface=veth-adguard

/container
add interface=veth-adguard remote-image=adguard/adguardhome:v0.107.23 start-on-boot=yes logging=yes

/interface veth
add address=10.0.0.11/24 gateway=10.0.0.1 name=veth-uptimekuma

/interface bridge port
add bridge=Docker interface=veth-uptimekuma

/container mounts
add dst=/app/data name=uptimekuma src=/kuma_data

/container
add interface=veth-uptimekuma mounts=uptimekuma remote-image=louislam/uptime-kuma start-on-boot=yes logging=yes

sftp to remove kuma_data/.type after first start

13 กุมภาพันธ์ 2566

docker-composer :: php mysql phpmyadmin

 ubuntu 22.04

file structure
docker-composer.yaml
www/Dockerfile
www/html/index.php
mysql/dbdata/


$ sudo apt update && sudo apt -y upgrade
$ sudo apt install docker-compose docker.io -y

$ vi docker-compose.yaml
version: "3.8"
services:

  www:
    build:
      context: ./www
      dockerfile: Dockerfile
    depends_on:
      - db
    volumes:
      - ./www/html:/var/www/html/
    ports:
      - "8080:80"
    networks:
      - my-network

  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: xxxxxxxxx
    volumes:
      - ./mysql/dbdata:/var/lib/mysql/
    ports:
      - "3306:3306"
    networks:
      - my-network

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    depends_on:
      - db
    environment:
      PMA_HOST: db
    ports:
      - "8081:80"
    networks:
      - my-network

networks:
  my-network:


$ vi www/Dockerfile
FROM php:8.2-apache

ENV TZ=Asia/Bangkok
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN printf '[PHP]\ndate.timezone = "Asia/Bangkok"\n' > /usr/local/etc/php/conf.d/tzone.ini

RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN apt-get update && apt-get upgrade -y

$ sudo docker-compose up -d

03 กุมภาพันธ์ 2566

PHP Cloudflare Turnstile

Turnstile is Cloudflare’s smart CAPTCHA alternative.

https://www.cloudflare.com/products/turnstile/

<?php
if (isset($_POST["cf-turnstile-response"])) {

    $captcha = $_POST['cf-turnstile-response'];
    $secretKey = "__Secret_Key__";
    $ip = $_SERVER['REMOTE_ADDR'];
    $url = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';
    $data = array('secret' => $secretKey, 'response' => $captcha, 'remoteip' => $ip);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    $curlData = curl_exec($curl);
    curl_close($curl);
    
    $result = json_decode($curlData, true);
    
    if (intval($result["success"]) == 1) {
        echo "success";
        exit();
    } else {
        echo "error";
        exit();
    }
}
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Test Turnstile</title>
        <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
    </head>
    <body>
        <form method="POST" action="">
            <div>
                <!-- The following line controls and configures the Turnstile widget. -->
                <div class="cf-turnstile" data-sitekey="__Site_Key__" data-theme="light"></div>
                <!-- end. -->
            </div>
            <button  type="submit">Sign in</button>
        </form>
    </body>
</html>