November is pret­ty much here. I guess it’s time to give you some feed­back about our devs dur­ing last sum­mer, and what we built around the pool.

A fea­ture we want­ed to rethink from scratch for a while is our 1-click install. We offer a sim­ple way to deploy pre-pro­vi­sioned app in your user space. Unfortunately, our archi­tec­ture was a bit out­dat­ed to eas­i­ly add new app, so we decid­ed to rewrite it1).


The Marketplace: a new place to start your projects

Deploying new app often fol­lows the same steps:

  1. Find the archive con­tain­ing the app or ser­vice you want to install
  2. Download it in your user space, extract it, and nav­i­gate into the cre­at­ed fold­er
  3. Perform actions, from the instal­la­tion to con­fig­u­ra­tion, either from the CLI or a (web)GUI
  4. Create a new data­base that is miss­ing for your app
  5. Configure it again
  6. Enable the %$@! miss­ing exten­sions
  7. Configure it hope­less­ly for the last time
  8. Create a new site that points to your giv­en app fold­er
  9. Fix per­mis­sion
  10. Sometimes drop every­thing and restart from 1/ to fix it (╯°□°)╯︵ ┻━┻

So we built a solu­tion to help you dur­ing this process. Using our 1-click install, you can deploy and auto­mat­i­cal­ly pro­vi­sion your app or ser­vice in your user space. No more need to con­fig­ure sys­tem require­ments, or man­u­al­ly down­load and install stuff. Just click on a but­ton, and it’s done.

Administration Panel: 1-click install link
Administration Panel: 1-click install link

Alas, our ini­tial archi­tec­ture relied on automat­ing some process through web-UI with inter­face script­ing and some tools like PhantomJS. This lat­ter is dep­re­cat­ed for a while, and all recent projects offer at least a CLI to man­age the instal­la­tion, con­fig­u­ra­tion, and pro­vi­sion­ing. It was time to rethink our solu­tion to improve its reli­a­bil­i­ty. This new archi­tec­ture also allows us to pro­vide you with new app, unable to sup­port pre­vi­ous­ly. Welcome to a new place where every­thing starts!

Find your preferred app

We just released our first pro­duc­tion-ready new 1-click install plat­form. After test­ing it inten­sive­ly dur­ing the last weeks, we’re now con­fi­dent in its inter­nal sta­bil­i­ty.

Administration panel screenshot: 1-click install interface<br><small>(please note that rates in the screenshot are purely fictive for the sake of (realistic) contents)</small>
Administration pan­el screen­shot: 1-click install inter­face
(please note that rates in the screen­shot are pure­ly fic­tive for the sake of (real­is­tic) con­tents)

Another (huge) task was to port exist­ing apps to the new plat­form. Releasing the new plat­form with few­er appli­ca­tions than before was a no-go. Our team2) did impor­tant work on it. Here’s the list of apps and frame­works you can cur­rent­ly deploy with the new 1-click plat­form:

  • DokuWiki: A sim­ple wiki, ide­al for team doc­u­men­ta­tion
  • Drupal: A PHP CMS/Framework to man­age your web­site con­tent
  • Gitea: A light­weight, self-hostable, Github alter­na­tive for your code repos­i­to­ries and issues
  • Joomla: A com­mon­ly used PHP CMS
  • Magento: A well-known PHP e-Shop plat­form
  • MediaWiki: The most known Wiki, used to pow­er Wikipedia
  • NeoFrag: An E-Sport ori­ent­ed CMS
  • Nextcloud: A per­son­al cloud that offers col­lab­o­ra­tion capa­bil­i­ties
  • PrestaShop: A sim­ple e-Shop plat­form
  • Thelia: An E-Shop plat­form for medi­um to large busi­ness­es
  • Wallabag: An open source Read It Later solu­tion
  • WordPress: The well-known CMS/Blog engine solu­tion

Note: A few apps dis­ap­peared, like phpBB, because they don’t offer an inner solu­tion to deploy them (like a CLI). Because those apps also suf­fer a lack of inter­est from the com­mu­ni­ty, we decid­ed to remove them.

What’s in the back, now?

As most recent Web appli­ca­tions offer improved ways to install and con­fig­ure them, it sounds great to use their built-in capa­bil­i­ties. So we imag­ined a way to con­fig­ure and script them eas­i­ly.

Each script declares an envi­ron­ment and a vari­able con­fig­u­ra­tion set using a YAML Front Matter.

It allows the pro­vi­sion­ing sys­tem to automag­i­cal­ly cre­ate the web­site type and set it up, con­fig­ure the inter­preter with the need­ed exten­sions, pre­set the data­bas­es need­ed to run the ser­vice, and all. The last tar­ball is fetched3), and extract­ed in your user space.

Then the script itself is exe­cut­ed to pro­vi­sion the appli­ca­tion with the set­tings spe­cif­ic to your alwaysdata’s account. Generating con­fig­u­ra­tion files, run­ning data­base migra­tion, fix­ing per­mis­sion, and what­ev­er oth­er tedious deploy­ment tasks: every­thing is auto­mat­ed.

That’s all; your app is now ready to use.

Wow, it sounds great!

Yeah, it is! For us, it offers many advan­tages:

  • It’s just script­ing, so it’s easy to write new scripts to add new apps and frame­works to the plat­form.
  • We removed the tricky parts based on automat­ing web-UI con­fig­u­ra­tion, so the scripts are more robust and more testable.
  • They’re scripts, so a few basic knowl­edge of shell com­mands are suf­fi­cient to devel­op them. Not com­fort­able with Bash? Use any script­ing lan­guage you pre­fer (Python, Ruby, etc.), and it will work as well!
  • We use the fea­tures offered by the edi­tor to auto­mate com­plex tasks, leav­ing the appli­ca­tion itself main­tain­ing com­pat­i­bil­i­ty between two ver­sions.
  • Scripts are Shiny, Scripts are Bright, Scripts are the Children of the Unicorns.
  • Handle errors and fix them are a lot eas­i­er than with UI automa­tion.
  • Did I say it’s just script­ing?

Our goal is to pro­vide you with the most com­mon ser­vices and appli­ca­tion, with­out break­ing the whole install script each time the devel­op­er releas­es a new ver­sion. This new plat­form allows us to give this com­fort to you, and we expect to bring you new app reg­u­lar­ly.

A word about safety during deployment

Some auto­mat­ed tasks pro­vide you with feed­back, and we also han­dle those use cas­es. Here are the most impor­tant parts rely­ing upon safe­ty dur­ing the auto­mat­ed deploy­ment process.

Random Passwords Generator

You often need to pro­vide an admin pass­word for your back end inter­face when installing new appli­ca­tions. Our script can gen­er­ate a ran­dom pass­word for you, or let you input your own pass­word dur­ing the pre­set step of the process. Whatever you choose, your pass­word is nev­er stored by our plat­form. You stay the only own­er of your own solu­tion.

Note: We don’t store any sen­si­tive infor­ma­tion, but if your app relies on an unen­crypt­ed pass­word in its con­fig­u­ra­tion file, the pass­word stays in its plain ver­sion. As the con­fig­u­ra­tion file is stored in your user space with prop­er per­mis­sion, it’s not a big deal about secu­ri­ty. But if you con­sid­er it as a risk, please fill an issue in the app’s track­er to get encrypt­ed pass­word sup­port ;).

Admin URLs, Custom configuration, and more

Some solu­tions allow you to cus­tomize your admin URL. We made some choic­es by default, to sim­ply the deploy­ment process. You’re even allowed to cus­tomize those URLs as you wish after the instal­la­tion, to stick to your needs.

Finally, we just pro­vi­sion the deployed app with a safe default con­fig­u­ra­tion. You can mod­i­fy, update, and cus­tomize any set­tings right after the instal­la­tion process.

Databases Creation

All manda­to­ry data­bas­es are cre­at­ed auto­mat­i­cal­ly with a new user ded­i­cat­ed to your app and a ran­dom pass­word. We do not store any infor­ma­tion relat­ed to your data­base con­fig­u­ra­tion dur­ing the process. Your data stays safe.

Logs (coming soon with the next version)

You can access the install logs gen­er­at­ed dur­ing the auto­mat­ed process from your user space itself. If the install task fails for any rea­son, you can get more feed­back about why it failed. If you want to send the report to any­one, the logs already miss all sen­si­tive infor­ma­tion, so nei­ther user­name, paths, nor pass­word appears in them.


We always want to give you a host­ing plat­form that is sim­ple and full of func­tion­al­i­ties. We expect that this new fea­ture will improve your deploy­ment process and help you to deliv­er your con­tent faster.

This blog post has a com­pan­ion. In the next few days, we will pro­vide you with a new arti­cle that will unleash the whole pow­er of this 1-click install process #teas­ing.

During this time, what if you give us the appli­ca­tions you want to see avail­able through this process? Use the com­ments or wave us by e-mail at community@alwaysdata.com to sug­gest new app to add.

Notes   [ + ]

1. spoiler: there’s anoth­er excel­lent rea­son to build a new archi­tec­ture, more news in an upcom­ing post 😉
2. and espe­cial­ly Héloïse and Nicolas, warm thanks to them
3. either using a clas­si­cal cURL or with a depen­den­cy man­ag­er if pro­vid­ed through this way