<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex TermiGram</title>
    <description>The latest articles on DEV Community by Alex TermiGram (@termigram).</description>
    <link>https://dev.to/termigram</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4190170%2F329aeb53-545a-43a8-b305-0e149ac0d655.webp</url>
      <title>DEV Community: Alex TermiGram</title>
      <link>https://dev.to/termigram</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/termigram"/>
    <language>en</language>
    <item>
      <title>How to download a file from your VPS inside Telegram</title>
      <dc:creator>Alex TermiGram</dc:creator>
      <pubDate>Tue, 27 Oct 2026 09:41:43 +0000</pubDate>
      <link>https://dev.to/termigram-team/a-first-sftp-test-from-telegram-download-one-harmless-file-3g97</link>
      <guid>https://dev.to/termigram-team/a-first-sftp-test-from-telegram-download-one-harmless-file-3g97</guid>
      <description>&lt;p&gt;You need a file from your VPS, but your laptop isn't nearby. An SFTP client can retrieve it using your existing SSH account. Here's the file-download path inside Telegram, using TermiGram.&lt;/p&gt;

&lt;p&gt;You'll need a server you're authorized to access, an SSH endpoint reachable by the client, and an account allowed to read the file. Before entering credentials, review the &lt;a href="https://docs.termigram.com/en/docs/security/" rel="noopener noreferrer"&gt;security model&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download one file
&lt;/h2&gt;

&lt;p&gt;For a first attempt, choose a small text file with non-sensitive contents you recognize. Note its full server path so you can distinguish it from a file with the same name elsewhere.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://t.me/TermiGram_Robot" rel="noopener noreferrer"&gt;TermiGram's Mini App&lt;/a&gt; in Telegram. Select your server card, or add a profile with the host, SSH port, and username you normally use.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;SFTP&lt;/strong&gt; on the server card and navigate to the file's folder.&lt;/li&gt;
&lt;li&gt;Find the file's row. Tap the &lt;strong&gt;down-arrow download icon immediately before the trash icon&lt;/strong&gt;. Opening the text editor is a separate action.&lt;/li&gt;
&lt;li&gt;Keep Telegram open until the transfer finishes. Open the downloaded copy and check its contents against the original. The destination and opening options depend on your Telegram client and operating system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A saved server card confirms only that the profile was saved. A folder listing confirms access to that directory. Opening the expected downloaded file is the check that completes this task.&lt;/p&gt;

&lt;h2&gt;
  
  
  If the file doesn't download
&lt;/h2&gt;

&lt;p&gt;If SFTP won't connect, check the same host, port, and account in your existing client. If the folder opens but the file is unreadable, check that account's permissions on the file and its parent folders. Avoid broad permission changes to make a download work.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.termigram.com/en/docs/sftp/" rel="noopener noreferrer"&gt;SFTP guide&lt;/a&gt; covers other file operations separately, including folder archives and the text editor.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI disclosure: Written by Codex for the TermiGram project account.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>A quick Linux server check from your phone</title>
      <dc:creator>Alex TermiGram</dc:creator>
      <pubDate>Tue, 20 Oct 2026 08:38:49 +0000</pubDate>
      <link>https://dev.to/termigram-team/a-read-first-linux-server-checklist-for-your-phone-4df6</link>
      <guid>https://dev.to/termigram-team/a-read-first-linux-server-checklist-for-your-phone-4df6</guid>
      <description>&lt;p&gt;A server alert arrives while you're away from your laptop. Before restarting anything, check three things: the host, disk space, and failed services.&lt;/p&gt;

&lt;p&gt;These commands work in any SSH client. For the Telegram workflow, open &lt;a href="https://t.me/TermiGram_Robot" rel="noopener noreferrer"&gt;TermiGram's Mini App&lt;/a&gt;, select your server card, and tap &lt;strong&gt;Connect&lt;/strong&gt;. You'll need working SSH access to a server you're authorized to administer. Review the &lt;a href="https://docs.termigram.com/en/docs/security/" rel="noopener noreferrer"&gt;security model&lt;/a&gt; before entering credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Confirm the host and account
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;hostname
id&lt;/span&gt; &lt;span class="nt"&gt;-un&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compare both results with the server and account you intended to use. If either is wrong, disconnect before continuing.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Check the affected filesystem
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find the mount used by the affected application. Check its &lt;strong&gt;Avail&lt;/strong&gt; and &lt;strong&gt;Use%&lt;/strong&gt; columns; free space on another mount won't help it.&lt;/p&gt;

&lt;p&gt;If an application reports "No space left on device" despite free bytes, check inodes too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A filesystem can exhaust its inodes before its storage capacity. A full filesystem is a reason to investigate, not permission to delete unfamiliar files.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Look for failed services
&lt;/h2&gt;

&lt;p&gt;On a systemd host:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl &lt;span class="nt"&gt;--failed&lt;/span&gt; &lt;span class="nt"&gt;--no-pager&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a listed unit belongs to the affected application, inspect it. For example, &lt;strong&gt;only if your service is named &lt;code&gt;nginx.service&lt;/code&gt;&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl status nginx.service &lt;span class="nt"&gt;--no-pager&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace that name with the relevant unit. &lt;code&gt;status&lt;/code&gt; shows its current state and recent log lines; it doesn't restart it. An empty failed-unit list doesn't prove the application works, so check the failing request or job as well. Skip these commands on hosts without systemd.&lt;/p&gt;

&lt;p&gt;Before making changes, note the affected mount or unit and the exact error. Keep credentials and sensitive log output out of public messages. A restart can wait until you know what you're trying to fix.&lt;/p&gt;

&lt;p&gt;References: &lt;a href="https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html" rel="noopener noreferrer"&gt;GNU &lt;code&gt;df&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://www.freedesktop.org/software/systemd/man/latest/systemctl.html" rel="noopener noreferrer"&gt;&lt;code&gt;systemctl&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://docs.termigram.com/en/docs/terminal/" rel="noopener noreferrer"&gt;Terminal guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI disclosure: Written by Codex for the TermiGram project account.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
