Container-based payment reminder image host for MikroTik.
814
A minimalist PHP + SQLite web app that displays a rotating image carousel for MikroTik Hotspot or Web Proxy payment reminders.
Designed for ISPs and network administrators, it serves as a lightweight, self-contained web interface for displaying announcements or payment notices when user access is restricted.
Unlike most setups that rely on external image URLs, this app hosts all images locally, ensuring reliability even without internet access β perfect for offline or isolated network environments.
Runs anywhere β from a full Docker server to MikroTik RouterOS v7 containers.
| Feature | Description |
|---|---|
| π» Device Detection | Automatically detects mobile or desktop clients to serve the right image. |
| π Local-Only Setup | No external dependencies or CDNs β ideal for offline or isolated networks. |
| π§ SQLite Storage | Lightweight configuration and settings database. |
| π³ Docker & MikroTik Ready | Designed for embedded and low-resource container environments. |
| π Dynamic Carousel | Smooth, auto-rotating background image carousel for announcements or payment reminders. |
mikrotik-payment-reminder/
β
βββ uploads/ # Image files displayed in the carousel
βββ database.sqlite # SQLite database file (auto-created on first run)
βββ index.php # Main application
βββ upload.php # Basic app configuration page
βββ Dockerfile # Lightweight PHP web server container
docker pull kintoyyy/mikrotik-payment-reminder
docker run -d --name payment-reminder -p 8080:80 -v $(pwd)/uploads:/var/www/html/uploads -v $(pwd)/database.sqlite:/var/www/html/database.sqlite kintoyyy/mikrotik-payment-reminder
Once running, open:
http://localhost:8080
You can manage the carousel images and configuration directly through the built-in admin interface.
Open your browser and go to:
http://localhost:8080/upload.php
Default credentials:
Username: admin
Password: admin
Once logged in:
.jpg, .png, .gif)./uploads/ directory.All uploaded files are hosted locally, so the app does not depend on any third-party hosting or internet connectivity.
Inside the same panel, you can also:
Changes are saved automatically in the local SQLite database (database.sqlite).
π§© Tested on: RouterOS v7.14+ βοΈ Requirements:
- Router with container support (e.g., RB5009, CHR, x86)
- Sufficient storage (e.g.,
disk1)- Internet access for pulling Docker images
/system/device-mode/update container=yes
# Reboot after enabling
/system/reboot
/container/mounts
add dst="/uploads" name=MOUNT_PAYMENT_UPLOADS src="/var/www/html/uploads"
add dst="/database.sqlite" name=MOUNT_SQLITE src="/var/www/html/database.sqlite"
/interface/bridge
add name=containers
/interface/veth
add name=veth-payment-reminder address=172.17.0.2/30 gateway=172.17.0.1
/interface/bridge/port
add bridge=containers interface=veth-payment-reminder
/container/config
set registry-url="https://registry-1.docker.io" tmpdir="disk1/tmp"
/container
add name="mikrotik-payment-reminder" \
interface=veth-payment-reminder \
logging=yes \
mounts=MOUNT_PAYMENT_UPLOADS,MOUNT_SQLITE \
root-dir="disk1/images/payment-reminder" \
remote-image="kintoyyy/mikrotik-payment-reminder" \
workdir="/"
# Start the container
/container/start mikrotik-payment-reminder
/ip/address
add address=172.17.0.1/30 interface=containers network=172.17.0.0
/ip/firewall/nat
add chain=srcnat action=masquerade src-address=172.17.0.0/30
add chain=dstnat action=dst-nat protocol=tcp dst-port=80 \
to-addresses=172.17.0.2 to-ports=80
/ip/pool
add name=EXPIRED ranges=10.254.0.10-10.254.0.250
/ppp/profile
add name=EXPIRED local-address=10.254.0.1 remote-address=EXPIRED \
dns-server=172.17.0.1 address-list=EXPIRED rate-limit=128k/128k
/ip/firewall/address-list
add list=WHITELIST address=172.17.0.2
/ip/firewall/nat
add chain=dstnat action=redirect to-ports=8082 protocol=tcp \
src-address-list=EXPIRED dst-port=80,443 dst-address-list=!WHITELIST
/ip/firewall/filter
add chain=forward action=drop protocol=tcp src-address-list=EXPIRED \
dst-port=80,443 dst-address-list=!WHITELIST
/ip/proxy
set enabled=yes port=8082 parent-proxy=0.0.0.0
/ip/proxy/access
remove [find]
add action=allow src-address=10.254.0.0/24
add action=redirect redirect-to=172.17.0.2:80 \
src-address=10.254.0.0/24 dst-port=80,443
add action=deny src-address=10.254.0.0/24
Once the container is running and NAT configured, open:
http://172.17.0.2/upload.php
Default Credentials:
Username: admin
Password: admin
/container/print
/container/logs mikrotik-payment-reminder follow=yes
.jpg or .png images.MIT License Free for personal and commercial use. Attribution appreciated.
Content type
Image
Digest
sha256:1a1543485β¦
Size
35 MB
Last updated
11 months ago
docker pull kintoyyy/mikrotik-payment-reminder