解決
centos7
systemctl
TigerVNC
泥沼

tigervncserverがCentOS7のsystemctlでenable化に再起動後失敗する。その忌々しい現象を解決した。

 以前書いていた問題について解決したのでここにご報告申し上げたい。
 と、言っても偶然の成功であり技術的な知見の向上によるものではないので、同じような悩みをお持ちの方の力にはなれない。
 むしろ真似したら状況は悪化するかもしれない。
image.png
 こんな感じ。
 あとから分かったのだが、どうやらVNC側のバグらしい。
 https://qiita.com/HiroshiAkutsu/items/6856e84c6efc126b801c
 とはいえ設定ファイルのひな型が実際のファイルとほぼすべての指南サイトで違っていることについてはいまだわからない。
 というかこれが解決したのは数か月前で、それからまったくVNC関係の記事を見ていないので今はどうかわからない。
 また、同じようなことに悩んでいる人が皆無に近いことも不思議である。

 というわけで今後とも頑張ります。
 
====== 以下まったく役に立たない駄文 ======

 去年の末ごろにさくらのVPS上でtigervnc-serverをguacamole経由にて使用していたのですが、CPUの脆弱性がどうのとかでyum updateをかけたら何もかも使えなくなったので、再構築を試みましたが二ヵ月かけても全く復旧できなくてそれを業者のせいにすべく、さくらを解約してお名前.comのVPSに乗り換えたらさらに泥沼化してしまったのでここに記録します。

 まず、さくらVPSで以前導入時にrootのhistoryを記録していた(つもり)だったのでなぞってみたところ、うまくいかず(初期にどううまく行かなかったのかくわしくは忘れた)どうにかつながったが挙動がおかしい。
1.表示されるデスクトップにWindowsでいうところのタスクバーが表示されない。
  このため、デスクトップとその上にあるアイコンしか操作できない。
2.デスクトップ上で右クリックして試しに壁紙を変更しようとしても出来ない。
  仮想?モニタが正常に認識されていない雰囲気。
3.それでもしばらくは使用できているが1分前後で接続が勝手に切れてしまう。
  systemctl statusを見るとfailedとなっている。
  daemon-reloadをやりなおしてstartやrestartをやるとその時だけ青信号や灰信号になる。
  が、電源を入れなおすとfailedの赤信号。
  ちなみに-kill :1 とか x1を消そうとしましたが、そもそも存在しませんでした。
4.さくらのコントロールパネルのVNCまでも何となくおかしい。

 この時点でコンパネのVPSとユーザのVPSの何かが衝突していると判断し、さくらを解約する。
 が、やがてお名前.comでもユーザ側のVNCはうまくいかず、さくらのコンパネのVNCがおかしかったのはこちら側のローカル環境所以であったと判り、ひどい邪推であったと反省する事になる。
 
 次にお名前.com VPSに移行後(結局どこでやっても同じなのだが、一応エポックを区切る)にとりあえずtigervnc-serverを単体で起動させ続ける事を目標にやってみるが、1mmも前進しない。
 で、ここまでで不思議な事は以下の通り。
1.systemctl status がFailedの状態でもvncserver :1とすると正常に作動する。
2.1の場合タスクバーから何からなにまでちゃんとviewer側に表示される。
3.壁紙も変更できる。
4.もちろん2,3はインターネット越しの別の端末で確認した。
5.vncserver@.serviceファイルの元ネタとコピー先についての解説にサイトによりゆれがある。
  (/usr/から始まっていたりいなかったり…この辺はこちらの無知ゆえなのだろうが)
6.最も一番最大に不思議なのは、vncserver@.serviceの編集対象の場所について。
  Webの解説によると数日前の編集のものも含め例外なく以下の様になっている。
  [Service]
  Type=forking
  # Clean any existing files in /tmp/.X11-unix environment
  ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
  ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i" 
  PIDFile=/home//.vnc/%H%i.pid
  ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
  
  しかし実際のファイルにはExecStartにはなく代わりに[USER]のところに書き換えるべき箇所がある!

 6については巷間のファイルを実際のファイルに丸写ししてからそこのところをユーザー名に書き換えてみたが、だめだった。

 まとめ
 tigervnc-serverは手でvncserver :1と起動すると正常に作動するが、自動に起動させる為systemctlを用いる事はできない。

 なぜなのか?