services: tinyfilemanager: image: php:8.2-apache container_name: tinyfilemanager restart: unless-stopped ports: - "8080:80" volumes: - ./tinyfilemanager.php:/var/www/html/index.php - ./data:/var/www/html/data - ./uploads:/var/www/html/uploads working_dir: /var/www/html command: > sh -c "curl -o index.php https://raw.githubusercontent.com/prasath89/tinyfilemanager/master/tinyfilemanager.php && chmod 755 index.php && apache2-foreground"
Running container processes as a non-root user reduces the potential impact of a container breakout. This can be achieved by setting the PUID and PGID environment variables as shown in the advanced configuration example. Alternatively, you can specify a user directly in your docker-compose.yml :
Traefik will automatically obtain an SSL certificate and route https://files.yourdomain.com to your TinyFile Manager container.
In the world of system administration and web development, we often face a common problem: you need to upload, download, edit, or manage files on a remote server, but you only have SSH access (or worse, no direct access at all). While command-line tools like scp , rsync , or sftp are powerful, they lack the visual immediacy of a Graphical User Interface (GUI).
$readonly_users = [ 'viewer' => '$2y$10$ReadOnlyUserPasswordHash', ]; tinyfilemanager docker compose
Open your web browser and navigate to http://your-server-ip:8080 . You will be greeted by the TinyFileManager login screen. Securing Your Deployment
4. Advanced Production Setup: Adding Nginx Reverse Proxy & SSL
Let's start with the absolute minimum configuration. Create a directory for our project:
The simplest way to deploy TinyFileManager with Docker Compose is to use a docker-compose.yml file that mounts a local directory for persistent storage. Create a project directory, and within it, create a file named docker-compose.yml . A minimal working example looks like this: services: tinyfilemanager: image: php:8
Now go ahead and deploy your own TinyFileManager with Docker Compose. You’ll wonder how you ever managed files without it.
services: tinyfilemanager: image: tinyfilemanager/tinyfilemanager:master restart: always ports: - "8080:80" volumes: - ./data:/var/www/html/data - ./config.php:/var/www/html/config.php
sudo chown -R 33:33 ~/docker/tinyfilemanager/data sudo chmod -R 775 ~/docker/tinyfilemanager/data Use code with caution. 2. Max File Upload Size Restrictions
version: '3.8'
version: '3.8' services: tinyfilemanager: image: tinyfilemanager/tinyfilemanager:latest container_name: tinyfilemanager restart: unless-stopped ports: - "8080:80" volumes: - ./data:/var/www/html/data - ./config.php:/var/www/html/config.php environment: - TZ=UTC Use code with caution. Configuration Breakdown
Add the baseline configuration. You must change the default passwords immediately for security.
By placing TinyFileManager on an external proxy network, you keep your container ports closed to the public host interface, routing all web traffic exclusively through an encrypted HTTPS connection managed by your proxy. Troubleshooting Common Issues 1. Permission Denied Errors
To wrap up your deployment, what type of or SSL solution are you planning to use to protect your login screen, or do you need assistance configuring host directory permissions for multiple storage paths? Share public link In the world of system administration and web
TinyFileManager is a web-based PHP file manager designed for speed and efficiency. Packed into a single PHP file, it requires no database, allowing it to be dropped into any folder on a web server to start managing files immediately. Its core features include a wide range of file operations—creating, deleting, copying, moving, renaming, and archiving files and folders. It also supports advanced uploads with drag-and-drop, URL imports, and multi-file uploads with extension filtering. The built-in code editor features syntax highlighting for over 150 languages, and the interface offers instant previews for images, videos, and PDFs, all within a responsive design that supports over 50 languages.
Deploying TinyFileManager with Docker Compose: A Complete Guide