Discourse and forum development

Hey everyone, I was wondering if it is possible to install discourse on my InfinityFree domain, as SSH is not available? If discourse can’t be done, what about Flarum?

Any help appreciated!

For Discourse, it isn’t projected for shared hosting, and so it can’t be installed on shared hostings, but it’s a best bet for VPSes. To install it with Docker on a VPS, if you have bought one, follow these instructions.

For Flarum, it uses Composer to manage its dependencies, so it can’t be installed very easily on shared hosting, and it’s not available on Softaculous too. So you have to install Composer and Flarum locally on your computer with these instructions, then move all the files from the public/ folder (even the .htaccess) to the Flarum project folder, edit the .htaccess uncommenting lines 9 to 14, and edit the index.php and flarum files, updating the paths to the new ones. After that, upload the files inside the Flarum project folder to your htdocs folder with a FTP client, create a database from the “MySQL Databases” section of the Control Panel, use the username and the password of your hosting account you can find on the same page you used to open the Control Panel of your hosting account, scrolling down to “Account Details” and clicking on “Show/Hide” to show the password, and the database host and its name to connect to the database, that can be found on the “MySQL Databases” section of the Control Panel, after typing in http://yourdomain/, where yourdomain can be replaced with your domain, then configure Flarum by inserting your forum name and creating the new admin user, and you’re done!


Thanks! I’ll try it out

1 Like

Wait, where is the public/ folder?

After installing Flarum with Composer, it will be on the folder on where are the Flarum files.


Ah yes thank you (again)!

1 Like

I’m not quite sure I understand. Where is the Flarum project folder? To which paths do I need to update index.php and flarum?

The Flarum project folder is the folder on where are the Flarum files.


Ok, so could you explain this to me?
I have installed Flarum, and all of the files are in a folder called Flarum. I am trying to install this onto a sub domain. There isn’t an htaccess file anywhere in my files (server or the flarum folder).

Can you try to enable hidden files? Here are the instructions for this if you are on Windows.

Sorry, I’m on Mac

Then open a Terminal and type this command:

defaults write com.apple.Finder AppleShowAllFiles true && killall Finder

I think I may have accidentally deleted it, (the one on the server)

It shows .nginx.config and .editorconfig

Yes, I remember deleting the file, and saying to myself “oops”

wanna recover it? create a .htaccess file and put these into it:

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Ensure the Authorization HTTP header is available to PHP
  RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

  # Uncomment the following lines if you are not using a `public` directory
  # to prevent sensitive resources from being exposed.
  # RewriteRule /\.git / [F,L]
  # RewriteRule ^composer\.(lock|json)$ / [F,L]
  # RewriteRule ^config.php$ / [F,L]
  # RewriteRule ^flarum$ / [F,L]
  # RewriteRule ^storage/(.*)?$ / [F,L]
  # RewriteRule ^vendor/(.*)?$ / [F,L]

  # Pass requests that don't refer directly to files in the filesystem to index.php
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [QSA,L]

# Disable directory listings
Options -Indexes

# MultiViews can mess up our rewriting scheme
Options -MultiViews

# The following directives are based on best practices from H5BP Apache Server Configs
# https://github.com/h5bp/server-configs-apache

# Expire rules for static content
<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresDefault                                      "access plus 1 month"
  ExpiresByType text/css                              "access plus 1 year"
  ExpiresByType application/atom+xml                  "access plus 1 hour"
  ExpiresByType application/rdf+xml                   "access plus 1 hour"
  ExpiresByType application/rss+xml                   "access plus 1 hour"
  ExpiresByType application/json                      "access plus 0 seconds"
  ExpiresByType application/ld+json                   "access plus 0 seconds"
  ExpiresByType application/schema+json               "access plus 0 seconds"
  ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
  ExpiresByType application/vnd.api+json              "access plus 0 seconds"
  ExpiresByType application/xml                       "access plus 0 seconds"
  ExpiresByType text/calendar                         "access plus 0 seconds"
  ExpiresByType text/xml                              "access plus 0 seconds"
  ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
  ExpiresByType image/x-icon                          "access plus 1 week"
  ExpiresByType text/html                             "access plus 0 seconds"
  ExpiresByType application/javascript                "access plus 1 year"
  ExpiresByType application/x-javascript              "access plus 1 year"
  ExpiresByType text/javascript                       "access plus 1 year"
  ExpiresByType application/manifest+json             "access plus 1 week"
  ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
  ExpiresByType text/cache-manifest                   "access plus 0 seconds"
  ExpiresByType text/markdown                         "access plus 0 seconds"
  ExpiresByType audio/ogg                             "access plus 1 month"
  ExpiresByType image/bmp                             "access plus 1 month"
  ExpiresByType image/gif                             "access plus 1 month"
  ExpiresByType image/jpeg                            "access plus 1 month"
  ExpiresByType image/png                             "access plus 1 month"
  ExpiresByType image/svg+xml                         "access plus 1 month"
  ExpiresByType image/webp                            "access plus 1 month"
  ExpiresByType video/mp4                             "access plus 1 month"
  ExpiresByType video/ogg                             "access plus 1 month"
  ExpiresByType video/webm                            "access plus 1 month"
  ExpiresByType application/wasm                      "access plus 1 year"
  ExpiresByType font/collection                       "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
  ExpiresByType font/eot                              "access plus 1 month"
  ExpiresByType font/opentype                         "access plus 1 month"
  ExpiresByType font/otf                              "access plus 1 month"
  ExpiresByType application/x-font-ttf                "access plus 1 month"
  ExpiresByType font/ttf                              "access plus 1 month"
  ExpiresByType application/font-woff                 "access plus 1 month"
  ExpiresByType application/x-font-woff               "access plus 1 month"
  ExpiresByType font/woff                             "access plus 1 month"
  ExpiresByType application/font-woff2                "access plus 1 month"
  ExpiresByType font/woff2                            "access plus 1 month"
  ExpiresByType text/x-cross-domain-policy            "access plus 1 week"

# Gzip compression
<IfModule mod_deflate.c>
  <IfModule mod_filter.c>
    AddOutputFilterByType DEFLATE "application/atom+xml" \
                                  "application/javascript" \
                                  "application/json" \
                                  "application/ld+json" \
                                  "application/manifest+json" \
                                  "application/rdf+xml" \
                                  "application/rss+xml" \
                                  "application/schema+json" \
                                  "application/vnd.geo+json" \
                                  "application/vnd.ms-fontobject" \
                                  "application/wasm" \
                                  "application/x-font-ttf" \
                                  "application/x-javascript" \
                                  "application/x-web-app-manifest+json" \
                                  "application/xhtml+xml" \
                                  "application/xml" \
                                  "font/collection" \
                                  "font/eot" \
                                  "font/opentype" \
                                  "font/otf" \
                                  "font/ttf" \
                                  "image/bmp" \
                                  "image/svg+xml" \
                                  "image/vnd.microsoft.icon" \
                                  "image/x-icon" \
                                  "text/cache-manifest" \
                                  "text/calendar" \
                                  "text/css" \
                                  "text/html" \
                                  "text/javascript" \
                                  "text/plain" \
                                  "text/markdown" \
                                  "text/vcard" \
                                  "text/vnd.rim.location.xloc" \
                                  "text/vtt" \
                                  "text/x-component" \
                                  "text/x-cross-domain-policy" \

# Fix for https://httpoxy.org vulnerability
<IfModule mod_headers.c>
  RequestHeader unset Proxy

Where do I put this file?

into .htaccess file. although create it first.

oh inside public folder i think.


No, as in once I have made the file, where do I upload it to?

If you moved index.php and flarum files inside the public folder, you need to put it in the Flarum project folder.

Then uncomment lines 9 to 14, and upload the files in your subdomain’s htdocs folder after defining the path to the files in the index.php and flarum files.

1 Like