Wiki.js is a single-page app, but it renders page content server-side, so search engines can read it. It still lacks a few things out of the box. What I did for this site:
Wiki.js uses the page title for <title> and og:title, and the description for <meta name="description">. These are what Google shows in results.
Administration → Groups → Guests → Page Rules: allow read:pages (and read:assets) on the paths you want public. Search engines are guests.
Administration → Theme → Head HTML Injection is a good place for a site-wide Person + WebSite schema. This tells Google who the site is about.
Wiki.js 2 has no built-in sitemap.xml, but you don't need a reverse proxy or a cron job in the container to get one:
pages.list) with a small script, leaving out unpublished and private pathsWiki.js serves files from the root asset folder at the site root, so it is available at /sitemap.xml. Upload a new version (same name) when you add pages.
Wiki.js 2.5 serves /robots.txt itself, based on Administration → General → Robots. With index, follow it returns an empty file, which means "everything may be crawled". That is fine for most sites: pages guests cannot read return 403 Unauthorized anyway. Submit the sitemap directly in Search Console instead of listing it in robots.txt.
Verify the domain in Google Search Console and Bing Webmaster Tools, then submit the sitemap.
Link to the site from LinkedIn, GitHub and other profiles. Inbound links are still the strongest signal.