Nginx Proxy Manager (NPM) is a user friendly, open source tool that simplifies the management of Nginx Reverse Proxy configurations. It have a Web UI for creating and managing Proxy Hosts, SSL Certificates and User Management and Permissions.
NPM makes managing services exposed to the Internet easily and securely. For easy installation and consistent environment, NPM runs on Docker.
services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: # These ports are in format <host-port>:<container-port> - '80:80' # Public HTTP Port - '443:443' # Public HTTPS Port - '81:81' # Admin Web Port # Add any other Stream port you want to expose # - '21:21' # FTP environment: # Mysql/Maria connection parameters: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" # Uncomment this if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt depends_on: - db
19. Create Docker Network for Nginx Proxy Manager.
sudo docker network create npm-nw
20. Start Nginx Proxy Manager.
sudo docker-compose up -d
21. Check the Docker Status.
sudo docker ps
22. Open favorite browser (eg. Google Chrome) and browse the following address. You should be able to see a Nginx Proxy Manager Welcome Page.
http://[IP Address]
23. Now login to Nginx Proxy Manager Admin Web UI, please note the port number is 81.
http://[IP Address]:81
24. Login with the default Username and Password as below.
Default Username : admin@example.com
Default Password : changeme
25. After successfully login, you will be prompted to change the Username and Password, please proceed to change it accordingly and remember the new Username and Password.
* Note : The option "--break-system-packages" is only required should you encountered any error during "pip" installations. Thus run the command without these option first.
* Note : If you still encountered errors, try install full Python3 by using "apt install python3-full" method.
(E) START DUINO MINER.
python3 PC_Miner.py
You will be prompted to key-in your Duino e-Wallet Username & Mining Key.
You will be prompted to select the Intensity, Cores and Donation level.
You can also specify the Miner's Hostname when prompted.
Wait for 1-2 minutes and the new miner will be reflected in your Duino e-Wallet website.
EDIT : 4-Apr-2025
For Ubuntu Server v.24.04.1 LTS or later. For some unknown reasons, either due to latest Python3 version or due to latest Duino v.4.3 version, it seems to the below command will works.
At times where the connected Monitor or Graphics card are unable to support certain resolution, either the wordings is too small to read or overly large making some info or buttons unable to be seen.
A simple fix is to "edit" the grub boot file and this can be done on-the-fly easily.
1. During the boot-up, select the appropriate install option and Press [E] to edit the boot-up configuration.
2. Append the "nomodeset" word at the end of the following line.
for Proxmox :-
linux /boot/linux26 ro randisk_size=16777216 rw quiet splash=silent proxtui vga=788 nomodeset
for Ubuntu :-
linux - /boot/vmlinuz-4.4.0-41-generix.efi.signed root=UUID=7x357f9a-47e7-946e-499eBee8adic ro quiet splash nomodeset svt_handoff
3. Proceed to save and exit the configuration file, Press [CTRL] + [X].
If you want the changes to be permanent after installation completed, you will need to modify "GRUB" file with the same option.
4. Edit the "GRUB" configuration file.
sudo nano /etc/default/grub
5. Append the "nomodeset" as shown below.
GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset"
6. Update the "GRUB" configuration.
sudo update-grub
7. Finally reboot the server for the new configurations to take effects.
AntMedia Server (AMS) is an Open-Source, Self-Hosted Video Streaming Platform. It supports steaming of pre-recorded videos to supported website such as Youtube, Twitch, HTML etc.
1. Ensure that you already have Ubuntu installed and updated with the latest packages. Also you need to have Apache2 web server pre-installed, up and running.
2. First, download the latest version of AntMedia Server Community Edition.
ProxyRequest off ProxyPass / http://127.0.0.1:5080/ ProxyPassReverse / http://127.0.0.1:5080/
</VirtualHost>
7. Enable Apache modules accordingly.
sudo a2enmod proxy proxy_http
8. Enable the new virtual site.
sudo a2ensite [domain.com].conf
9. Enable SSL for AntMedia Server.
cd /usr/local/antmedia
sudo ./enable_ssl.sh -d [domain.com]
10. Ensure the following ports is accessible to the server.
Port Number
Protocol
Descriptions
80
TCP
SSL
5080
TCP
HTTP
5443
TCP
HTTPS
4200
UDP
SRT
1935
TCP
RTMP
50000 - 60000
UDP
WebRTC
5000
TCP
Multi-Nodes Cluster (optional)
11. Restart Apache Server.
sudo systemctl restart apache2
12. Open your favorite browser (eg. Google Chrome), browse the following URL.
http://[domain.com]:5080
13. Once the page have been loaded, you will be prompted to create the first administrator account. Procced to create the admin account and login afterward.
NextCloud is an Open Source, Self-Hosted or Cloud Hosted, File Sync and Sharing Platform. It's Secure, Private and Easy to use. Compatible with Windows, Linux, Android and Apple iOS devices.
This is assuming that you already have Ubuntu Server installed, patched and updated.
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule>
</VirtualHost>
13. Configure and modify PHP file. Modify the value according to your requirements.
memory_limit = 512M
upload_max_filesize = 512M
max_execution_time = 360
post_max_size = 512M
date.timezone = Asia/Kuala_Lumpur
opcache.enable = 1
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1
14. Enabled Apache modules for NextCloud use.
sudo a2enmod dir env headers mime rewrite ssl
15. Enable APCU module in PHP.
sudo nano /etc/php/8.3/mods-available/apcu.ini
add the following line :-
apc.enable_cli = 1
16. Open your favorite browser, such as Google Chrome browser. And type the URL of NextCloud server (eg. http://demo.com). At the main screen, you need to configure the NextCloud Database (eg. nextcloud) created earlier including its username (eg. ncuser) & password (eg. ncpass). You also need to create the First Administrator account with a valid email address too.
17. NextCloud screen will auto refresh upon successful connection to the database, now login with the new administrator account created in earlier step.
Piwigo is an Open Source Photo Management Server, it allows you to self-host your very own photo management, organizing and share your photo easily on the web.
<Directory /var/www/html/piwigo/> Options FollowSymlinks AllowOverride All Require all granted <\Directory> <\VirtualHost>
11. Then we need to enable the newly created site.
sudo a2ensite piwigo.conf
12. We also need to enable Apache module as below.
sudo a2enmod rewrite
13. Finally we need to restart Apache Server.
sudo systemctl restart apache2
14. Once done, open any preferred browser and browse to Piwigo site.
http://[IP Address]/piwigo
15. You will need to perform initial configurations of piwigo, enter all the relevant information as required. This includes the Database Name and Credentials, also you will need to create an administrator user (to manage the Piwigo) which are not "Root".
16. Once everything are successfully configured, you will be able to login to the Piwigo site and you can start to create your first album and start uploading photos.
Note : It is recommended to install a Plugin called "Community" which allows your "Users" to create their own albums and upload photos.
Most companies now days needs a way to share large file(s), whether the intended recipient is a Customer, Supplier or among the Employees itself.
Most have known that there is a limitation on Email's attachment, the file size solely depends on which Email Provider you are using. The most common would be Microsoft Exchange, Exchange Online, Microsoft 365, Google Enterprise (aka Workspace) and many more. All these services have a limitation of email attachment, for example; Exchange Online have a limit of a maximum of 150MB size only.
What if you wanted to send larger file size, let's say an AutoCAD or Photoshop file ? These file can be very large depending on the contents.
While there are so called "FREE" large file sharing services available, but these services also have some limitations. These includes the lacks of tracking, security and reporting, some may also needs you to register for an account before using.
Do you really trust them with your information ??? 😏
Furthermore there is also limit on the storage of how many file(s) or folder(s) you wanted to share and for how long you can to keep it.
Thus it make sense that we need to self-host a file sharing server with the following conditions :-
The sharing have custom expiry date.
Only intended recipient(s) able to download or access it.
Able to notify the recipient(s) via email.
Able to track how many times the file(s) was downloaded.
Able to track who is the sharer or uploader.
And lastly, the ability to have logs for auditing purposes.
So, today I will be showing you the installation of yet another Open Source Software, called ProjectSend. If you find this software useful, please donate to them. Your donation will ensure they are able to continue to develop the software.
Let's start ...
1. As always, ensure you have Ubuntu Server v.22.04.3 installed and updated.
sudo apt update && sudo apt upgrade -y
2. Next is to install a Web Server and a Database Server.
5. Now we need to secure our database server first.
sudo mysql_secure_installation
You will be prompted with the following questions, please answer as per your needs in "RED" text below.
Enter current password for root (enter for none): [PRESS ENTER] Set root password? [Y/n]: Y New password: [Key-In Password] Re-enter new password: [Repeat password] Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y
6. Then we can create the database for this software.
sudo mysql -u root -p
You will be prompted to login, type-in the password you have created earlier. And follow the below commands to continue. You may replace the "RED" text as you deemed fits.
CREATE DATABASE projectsend;
CREATE USER 'projectsenduser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON projectsend.* TO projectsenduser@localhost;
FLUSH PRIVILEGES;
QUIT;
7. Now, we need to download the latest ProjectSend file, as at time of writing the latest version was located in sub-folder "614", as such the newer version may have new sub-folder. Always check their website for the latest version and requirements.
<Directory /var/www/html/projectsend/> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
13. Next is to enable Apache2's Rewrite module.
sudo a2enmod rewrite
14. Now we need to enable the new projectsend site.
sudo a2ensite projectsend.conf
15. Restart Apache2 server.
sudo systemctl restart apache2
16. On another computer, open any preferred browser (eg. Google Chrome) and browse to the following URL.
http://projectsend.demo.com.my
OR
http://[IP Address]
You will now be automatically prompted to create the "Administrator" credentials, proceed to key-in your preferred administrator's name and password accordingly. Click on the "INSTALL" button when done.
This may take a while, depending on your server's hardware specifications.
17. Since this server will be access from the Internet, it is recommended to secure the server. You might also want to consider installing "Fail2Ban" for extra security measures.
sudo ufw enable
sudo ufw allow http
sudo ufw allow https
18. Now we need to install Let's Encrypt certificate to make it more secure.
You will be prompted for some information and selections, for SSL to works you need a valid email address. Also ensure that your Firewall or Router's Port Forwarding is configured correctly. The required port is 80 (HTTP) and 443 (HTTPS).
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [Your Email Address]
Please read the Terms of Service at https://letsencrypt.org/LE-SA-v1.3-September-21-2022.pdf. You must agree in order to register with ACME server. Do you agree? (Y)es/(N)0: Y
Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot ? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support freedom. (Y)es/(N)o: N
When prompted for domain selection, you can select according to your needs. In this case I would select all domains by just pressing [ENTER] key to leave it blank.
Which names would you like to activate for HTTPS for? ---------------------------------------------------------------------------------------------------------------- 1: projectsend.demo.com.my 2: www.projectsend.demo.com.my ---------------------------------------------------------------------------------------------------------------- Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): [Press Enter]
19. Finally, another restart of Apache2 server and your ProjectSend site is now with SSL.