Skip to content

How publishing works

Publishing in Silex takes your visual design and turns it into a live website, ready for visitors.

When you click Publish, Silex transforms your site into clean HTML and CSS files, sends them to a storage service (like GitLab), and then automatically builds and deploys your site to the web. The entire process is designed to feel seamless — you click a button and your site goes live.

The publishing pipeline: from design to live site

Here's what happens behind the scenes when you publish:

1. You click Publish — The Publish dialog opens. You choose where to store and host your website. For most designers, that's GitLab Pages (free hosting included with GitLab).

2. Silex transforms your design — Your visual design is converted into clean, semantic HTML and CSS. Symbols are written into each page as regular HTML. CSS Variables are written.

3. Files are committed to Git — The transformed files (HTML, CSS, assets) are committed to a Git repository. If you're using GitLab, this happens automatically — Silex handles the Git commit for you.

4. GitLab CI runs a build — At each publication, Silex adds a tag to the repository, named _silex_ followed by a number. GitLab detects this tag and automatically runs a build pipeline. A commit alone does not start it. This is where build awesome (the new name of Eleventy) enters the picture.

5. Build awesome builds your site — Build awesome is a static site generator. It takes your HTML files and processes them: it applies build awesome shortcodes (if you use them), handles collection pages (pages generated from data), and prepares everything for deployment. Build awesome outputs a _site/ folder with the final HTML, CSS, and assets. For a simple static site, the content of your pages does not change, and each page gets its own folder: about.html is published as about/index.html. Advanced users can add build steps (search indexing, image optimization…) via a build.json file — see Customize the build.

6. GitLab Pages deploys — The _site/ folder is automatically deployed to GitLab Pages, a free hosting service. Your site is now live at a URL like https://youruser.gitlab.io/yourproject/. Silex creates the GitLab project as private: after the first publication, set Pages to Everyone so that visitors can see the site (see Publish to GitLab).

7. Optional: custom domain — You can point a custom domain (e.g., mysite.com) to your GitLab Pages URL using DNS records.

Why Build awesome?

Build awesome is a lightweight build tool that sits between your design files and the live website. While your Silex design is static HTML, build awesome adds powerful features without requiring you to write code:

  • Collection pages — If you bind your site to a CMS (like WordPress), build awesome can generate multiple pages from a single template. For example, one page design for blog posts becomes 10 actual pages — one for each post in your database.
  • Shortcodes — You can insert special blocks in your design that build awesome processes at build time.

For simple static sites without a CMS, build awesome's job is lightweight — it mostly just moves your files into the right folder and prepares them for deployment.

Eleventy plugins

The build can do more: a sitemap, optimized images, an RSS feed. You add them with Eleventy plugins. No need to be a developer: you copy and paste a few files into your repository on GitLab, from your browser. See Add a plugin, step by step.

The role of storage and hosting connectors

Silex separates two concepts:

Storage — where your website files and assets live while you're designing (and where they're committed when you publish). The default is GitLab repository.

Hosting — where your live website is served from. Usually the same place — GitLab Pages pulls files from your GitLab repository and serves them.

When you click Publish, you authenticate with your storage service (GitLab). Silex commits your files there, then adds a tag. GitLab detects this tag, builds the site, and the hosting service (GitLab Pages) deploys it.

What gets published?

When you click Publish, Silex sends these files to your storage:

  • HTML pages — One per page (e.g., index.html, about.html, contact.html)
  • CSS — Your site's styles, including all the rules you've set in the Style panel
  • Assets — Images, videos, fonts, and any media you've added
  • Data files — If you use a CMS, the data bindings and expressions are stored so build awesome can process them at build time
  • Build files — The files that build and deploy your site: build.json (yours to customize — Silex never overwrites it), plus build.sh, and the CI configuration (e.g. .gitlab-ci.yml), both generated by Silex (don't edit those)

Silex handles all of this automatically. You don't need to understand what each file is — just know that everything needed to build and deploy your site is included.

Publish to your own web host with FTP or SFTP

The online version of Silex does not connect to FTP servers. If your web host gives you FTP or SFTP access, you have two ways to publish there: from Silex Desktop, or with GitLab, which sends your site there for you. This section explains GitLab. Each time you publish, GitLab builds your site, then uploads it. Setting this up takes about 15 minutes and includes one copy and paste of technical text. You only do it once.

Before you start, you need:

  • A GitLab account, and your site stored on it. If your site was stored on FTP, first move it to Silex Desktop
  • Your host's server name, your user name and your password. Your host's control panel or welcome email usually has them. Prefer SFTP if your host offers it: plain FTP sends your password unencrypted
  • The name of the folder of your public site: on your server, the one that holds your current index.html, often public_html or www

Files with the same name on your server are replaced, for example an existing index.html. Other files stay. If a site is already there, first copy it to your computer with an FTP client such as FileZilla.

To open your GitLab project: in Silex, the link is in Site Settings > General.

1. Publish your site once from Silex. This creates a file named build.json in your GitLab project.

2. Add your server details to GitLab. In the left menu of your project, go to Settings → CI/CD, then open the Variables section. For each line below, click Add variable, fill in Key and Value, and save:

Key Value Example
FTP_HOST Your server name, with sftp:// or ftp:// before it. If your host gave you a port number, add it at the end sftp://ssh.example.com or ftp://ftp.example.com:2121
FTP_USER Your user name alice
LFTP_PASSWORD Your password
FTP_PATH The folder of your public site /public_html

Leave Protect variable unticked, otherwise the values do not reach the build. Set Visibility to Visible for the first, second and fourth, and to Masked for LFTP_PASSWORD. GitLab only masks a value of at least 8 characters with no spaces: if yours is refused, ask your host for a longer password.

3. Add the upload to the build. In the list of files on the home page of your project, click build.json, then Edit and Edit single file. It should contain only { "type": "build" } between square brackets. Replace everything with this:

[
  { "type": "build" },
  { "type": "sh", "value": "apt-get update && apt-get install --no-install-recommends -y lftp ca-certificates openssh-client" },
  { "type": "sh", "value": "lftp -c \"set net:max-retries 2; set net:timeout 20; set sftp:auto-confirm yes; open --env-password -u $FTP_USER $FTP_HOST; mirror -R _site $FTP_PATH\"" }
]

If the file has other steps, someone customized it: keep them and add the two lines that start with { "type": "sh", with a comma at the end of every step but the last. Save the file (GitLab calls this Commit changes).

4. Publish from Silex. Wait for the message Your website is now live!, usually a few minutes. Your site is then on your server: open it at your own address.

Good to know:

  • Silex's View your website button still opens the GitLab Pages address, because your site is published there too
  • A page you delete in Silex stays on your server. Remove it with an FTP client such as FileZilla
  • With SFTP, the build accepts your server's SSH key without checking it. Someone on the network between GitLab and your host could pretend to be your server and get your password. This is still safer than plain FTP. To check the key, store it in a GitLab variable

If the upload fails, Silex says Build failed and offers View build logs. Look at the last lines. Login failed means the user name or password is wrong. The certificate is NOT trusted means the server's name does not match its security certificate: ask your host which server name to use, or use SFTP. Correct the variable on the same Variables page, then publish again.

Publish with FTP or SFTP from Silex Desktop

Silex Desktop, an application for your computer, can send your site to your web host itself, with FTP or SFTP. You do not need a GitLab account for this.

Before you start, you need:

  • Your site in Silex Desktop. If it was stored on FTP, first move it to Silex Desktop
  • Your host's server name, your user name and your password. Your host's control panel or welcome email usually has them
  • The name of the folder of your public site, often public_html or www
  • Node.js on your computer, if your site is set to Eleventy: Silex Desktop needs it to publish such a site with FTP or SFTP, or to a local folder. A site set to Automatic uses Zola in Silex Desktop and does not need Node.js

Each time you publish, Silex makes this folder the same as your site. Files in the folder that are not in your site are deleted, for example a page you removed in Silex. To protect you, Silex refuses a folder that already has files it did not publish, even a site you published with the online version of Silex: it says the folder already has files that Silex did not publish. Choose a new folder, or copy what you want to keep to your computer with an FTP client such as FileZilla, then empty the folder. Your public site is offline until you publish. If your silex folder is inside this folder, first move your site to Silex Desktop. To keep other files next to your site, use GitLab instead.

  1. In Silex Desktop, open Integrations. Under Add to Silex, find FTP / SFTP. If the card shows Install, click it: Silex downloads the program it needs, rclone. Then click Use
  2. In Add a server, choose the Protocol, FTP or SFTP. Prefer SFTP if your host offers it
  3. Fill in Address of the server, User name and Password. Leave Port empty for the usual port, and leave Name empty if you do not use rclone yourself. Silex checks that it can connect before it keeps the server
  4. Open your site and click Publish. If Silex asks, choose your server in the list
  5. In Folder on the server, write the folder of your public site. Address of your website is optional: with it, Silex gives you a link to your website after publishing
  6. Click Publish

With FTP, Silex encrypts the connection. If your server does not accept this, tick Connect without encryption in Add a server: your password and your files then travel in the clear.

If Silex says the server did not let Silex write in the folder, check the name of the folder, and that this user can write there.

Get your site as a zip file

The online version of Silex no longer has a download button, but GitLab keeps a zip of each build.

  1. Publish your site from Silex, and wait for Your website is now live!
  2. Open your GitLab project (the link is in Site Settings > General in Silex). In the left menu, go to Build → Jobs
  3. On the most recent pages job marked Passed, check the date, then click Download artifacts
  4. Unzip the file. Your site is the _site folder inside

With an FTP client such as FileZilla, upload what is inside _site, not the folder itself, to the folder of your public site.

Double-clicking index.html shows a page without its styles. Your site is not broken: it needs a web server. Once uploaded, it looks right.

This zip holds the finished site. Silex cannot open it to edit it, so it does not replace your project. On GitLab.com a zip is kept for 30 days, and your site and your project stay. Publish again to get a new one.

If you are at ease with a terminal, you can look at the site on your computer: in the _site folder, run python3 -m http.server, then go to http://localhost:8000.

Move a site stored on FTP to Silex Desktop

The online version of Silex can no longer open sites stored on an FTP server. Your files are still on your server, and a site you already published stays online. To keep editing, move the site to Silex Desktop, an application for your computer. Silex Desktop can publish to your web host with FTP or SFTP. Getting your site as a zip from Silex Desktop is planned, with no date yet.

Before you start: after the move, your site is on one computer only. You can publish it to your web host with FTP or SFTP, or through a forge such as GitLab or Codeberg, with a free account.

  1. Install Silex Desktop from the releases page: under Assets, take the file ending in .exe for Windows, .dmg for macOS, .AppImage for Linux. Open Silex Desktop once, which creates its websites folder, then close it
  2. Install FileZilla. At the top, fill in Host, Username, Password and, if you have one, Port, then click Quickconnect. These are the details you used to log in to Silex. If you lost them, your host's control panel can give them
  3. Open the silex folder, at the top of your FTP account. If you changed the root path under Storage options when you logged in, open that folder instead. There is one folder per site, with a long random name. To find which is which, download the meta.json file inside and open it with a text editor: it has the name of the site
  4. Download the whole folder of your site, without renaming it. Check that the Failed transfers tab at the bottom of FileZilla is empty
  5. Put it in the websites folder of Silex Desktop. The file website.json must be directly inside your site's folder:

    System Folder
    Linux ~/.local/share/org.silex.desktop/websites
    macOS ~/Library/Application Support/org.silex.desktop/websites
    Windows %APPDATA%\org.silex.desktop\websites

    These folders are hidden. Paste the path as it is in the address bar of your file explorer (on macOS: Go → Go to Folder in the Finder).

  6. Open Silex Desktop. Your site is in the list. If it is not, check that website.json is directly inside your site's folder, and that this folder is directly inside websites

Leave the copy on your server: you do not have to delete it, and your public site may be next to it. To keep your web host, see Publish with FTP or SFTP from Silex Desktop. To publish on a forge, see Publishing from Silex Desktop. You can also publish to GitLab from Silex Desktop, then follow Publish to your own web host from step 2.

Troubleshooting publication issues

If your site doesn't publish or shows an error:

Check your connection — Make sure you're logged in to your storage service (GitLab) in Silex. The Publish dialog will show the status.

Watch the CI/CD pipeline — After you publish, go to your GitLab project page and click Build → Pipelines. You'll see the build process. If there's an error, the log shows why.

Check who can see the site — On GitLab, go to Settings → General → Visibility, project features, permissions and set Pages to Everyone. The project itself, with your files, can stay private.

Verify the domain — If you set up a custom domain, check that your DNS records are correct and pointing to GitLab Pages.

Learn more

Full walkthrough — narrated, in English:


Quiz

Q1: What does build awesome do in the publishing pipeline?

  • A) Converts your Silex design to HTML and CSS
  • B) Hosts your website on the internet
  • C) Builds your site from your HTML files, processes CMS data, and prepares everything for deployment
Answer

C) Builds your site from your HTML files, processes CMS data, and prepares everything for deployment — Build awesome is the build step between your files and deployment. Silex handles the design-to-HTML conversion; GitLab Pages handles hosting.

Q2: When you publish to GitLab, where does Silex store your files?

  • A) Directly on GitLab Pages (the live server)
  • B) In a GitLab repository (Git storage)
  • C) On your local computer
Answer

B) In a GitLab repository (Git storage) — Silex commits your files to a Git repository. GitLab's CI/CD pipeline then automatically builds and deploys from there.

Q3: What happens after you click Publish?

  • A) Your site is immediately live
  • B) Silex commits files to Git, GitLab CI builds the site with build awesome, and GitLab Pages deploys it
  • C) You need to manually run a build command
Answer

B) Silex commits files to Git, GitLab CI builds the site with build awesome, and GitLab Pages deploys it — The entire process is automated. Once you click Publish, Silex handles everything.

Q4: Can you use a custom domain with GitLab Pages?

  • A) No, you must use the default youruser.gitlab.io domain
  • B) Yes, by setting up DNS records and configuring the domain in GitLab Pages settings
  • C) Only if you upgrade to a paid plan
Answer

B) Yes, by setting up DNS records and configuring the domain in GitLab Pages settings — Custom domains are free and available to all users. See the Custom domain page for step-by-step instructions.

Q5: What is the relationship between storage and hosting in Silex?

  • A) They are two completely separate services with no connection
  • B) Storage is where files live during design; hosting is where the live website is served from. Usually both are GitLab.
  • C) Storage and hosting are the same thing
Answer

B) Storage is where files live during design; hosting is where the live website is served from. Usually both are GitLab. — Silex separates these concepts so you can use different services if needed, though most users use GitLab for both.

Edit this page on GitLab