LogoLogo
Getting StartedDevelopersDeployment GuideGet Help
  • Quick Links
  • Welcome to Form.io
    • Getting Started With Form.io
    • Launch a Form
    • Overview of Form.io
  • Developer Tool Ecosystem
    • PDF Solution
    • Enterprise Form Builder
    • Form View Pro
    • The Security Module
    • Accessibility Compliance Module
    • Developer License
    • SQL Connector - Deprecated
    • Integration Libraries
    • Form.io CLI Tool
  • User Guide
    • Introduction
    • Form.io Developer Portal
    • Teams
    • Projects
      • Project UI
      • Project Settings
      • Stages
      • Multi-Tenancy
    • Resources
      • ResourceJS
    • Forms
      • Form Creation
      • Form Types
      • PDF Forms
      • Embedding a Form
      • Form Revisions
      • Form Settings
    • Form Building
      • Form Builder UI
      • Form Components
        • Component Settings
        • Basic Components
          • Resource as Select Component Data Source
        • Advanced Components
        • Layout Components
        • Data Components
        • Premium Components
          • Nested Forms
        • Custom Components
      • Logic & Conditions
      • Existing Resource Fields
      • Actions
    • Submissions
      • Accessing Submissions
      • Importing Submissions
    • Form.io eSignature - Coming Soon
    • Form.io Reporting Module
    • PDF Template Designer
    • Form View Pro
    • Form Manager
    • Enterprise Form Builder Module
      • Installation
      • User Guide
  • Developer Guide
    • Introduction
      • Application Development
      • API Documentation
    • Form Development
      • Form Renderer
      • Form Builder
      • Form Embedding
      • Form Evaluations
      • Form Templates
      • Custom Components
      • Translations
    • JavaScript Development
      • JavaScript SDK
      • JavaScript Frameworks
      • JavaScript Utilities
    • Authentication and Authorization
      • SAML
      • OAuth
      • LDAP
      • Resource Based Authentication
      • Email Authentication
      • Two-Factor Authentication
    • Roles and Permissions
      • Field Match-Based Access
      • Field-Based Resource Access
      • Group Permissions
    • Integrations
      • Email Integrations
      • File Storage
      • Google Developer Console
      • eSign Integrations
      • Relational Databases
    • Modules
    • Fetch Plugin API
    • CSS Frameworks
    • Offline Mode
    • Audit Logging
  • Deployments
    • Self-Hosted Deployment
      • Local Deployment
        • Local File Storage
      • Kubernetes
      • Cloud Deployment
        • AWS Deployment
          • AWS Lambda
          • Form.io/AWS Elastic Beanstalk End-To-End Encrypted Deployment
        • Azure Deployment
          • Azure App Service
            • Azure MSSQL Connector - Deprecated
          • Azure Virtual Machine
          • Azure Kubernetes Service
          • Set up the DB
        • GCP Deployment
          • GCP Cloud Run
      • On-Premise Deployment
      • Enterprise Server
      • PDF Server
    • Deployment Configurations
      • DNS Configuration
      • Load Balancer Configuration
    • Licenses
      • License Management
      • Library Licenses
    • Portal Base Project
      • Portal SSO
      • Portal Translations
    • Maintenance and Migration
      • Changes to Premium Libraries
  • FAQ
    • FAQ
    • Tutorials & Workflows
      • Password Reset
      • Dynamic Select Filtering
      • Approval Workflow
      • SSO Email Token
      • Embedding A Video
      • Data Source Validation
      • Select Data Source Options
      • Nested Form Workflows
        • Nested Wizard Forms
      • Save as Draft
      • Role-Based Conditions
      • Custom Component
      • Dynamic Radio and Select Box Values
      • Override CKEDITOR
    • Errors
    • Examples
    • License Utilization Checks
  • Contact Us
Powered by GitBook
On this page
  • Installing MinIO
  • Pre-Requisites
  • Deploying the MinIO Container

Was this helpful?

  1. Deployments
  2. Self-Hosted Deployment
  3. Local Deployment

Local File Storage

PreviousLocal DeploymentNextKubernetes

Last updated 7 months ago

Was this helpful?

When locally deploying the Form.io Platform, is the preferred method for local file storage. MinIO is an open-source distributed object storage server written in Go, designed for Private Cloud infrastructure providing AWS S3 storage functionality. This server is best suited for storing unstructured data and files such as photos and videos within the local environment.

MinIO can be used on an Enterprise level, however many customers opt to use storage provided by an existing component of their technology stack, or other storage methods when deploying to the Cloud or their own On-Premise environment.

Installing MinIO

If the Form.io Platform was deployed to the environment with the methodology, MinIO is already included in the deployment, and manual installation is not required.

Pre-Requisites

To deploy a new MinIO server, complete the following pre-requisite steps:

  1. Install either on the local machine, or on a private cloud server.

  2. Create the necessary directories to store files using the file browser, or by executing the following commands:

    mkdir ~/minio/data
    mkdir ~/minio/config
  3. Run the following command to pull the MinIO container from Docker Hub:

    docker pull minio/minio

Deploying the MinIO Container

  1. Execute the following command to start the MinIO container:

docker run -itd \
  -e "MINIO_ROOT_USER=CHANGEME" \
  -e "MINIO_ROOT_PASSWORD=CHANGEME" \
  -e "MINIO_HOST: 127.0.0.1" \
  -e "S3_ENDPOINT: $MINIO_HOST:9000/minio/formio" \
  --name formio-minio \
  --restart unless-stopped \
  -p 9000:9000 \
  -p 9001:9001 \
  -v ~/minio/data:/data \
  -v ~/minio/config:/root/.minio \
  minio/minio server /data --console-address ":9001"

When a more secure deployment is required, exclude the environment variables for MINIO_ROOT_USER and MINIO_ROOT_PASSWORD as follows:

docker run -itd \
  -e "MINIO_HOST: 127.0.0.1" \
  -e "S3_ENDPOINT: $MINIO_HOST:9000/minio/formio" \
  --name formio-minio \
  --restart unless-stopped \
  -p 9000:9000 \
  -p 9001:9001 \
  -v ~/minio/data:/data \
  -v ~/minio/config:/root/.minio \
  minio/minio server /data --console-address ":9001"

These keys can later be determined by running the Docker command:

docker logs formio-minio

Make sure to take note of these keys for later configurations.

Note that the sample credentials "CHANGEME" should be updated to reflect the credentials intended for access to the file storage.

In this example, note that MinIO is mounting the folder ~/minio. This can be changed to any drive on the system machine where MinIO should store files.

  1. Verify the formio-minio container is running by executing the following command:

docker ps

The result should look similar to the following:

  1. Modify the hosts file to allow easy access to MinIO:

    • On MacOS/Linux: From the terminal run the following command, logging in if prompted:

sudo nano /etc/hosts
  • On Windows: Use Notepad as an Administrator to open the file C:\Windows\System32\Drivers\etc\hosts Once the file is open, modify the appropriate line to read:

127.0.0.1       localhost minioSave the file and exit the text editor.
  1. After successfully loading the MinIO dashboard, navigate to Buckets under the Administrator tools on the left-hand menu.

  1. Create a new Bucket by clicking on the Create Bucket+ button. Give the bucket a descriptive name and record the choice for future configurations.

The MinIO Server should now be operational.

In a browser, navigate to ( or http://localhost:9001) to view the MinIO interface. Log in using the MINIO_ROOT_USER and MINIO_ROOT_PASSWORD previously used to start the container.

Min
IO
Server
docker-compose
Docker
http://minio:9001/