Giter Site home page Giter Site logo

xpipe-io / xpipe Goto Github PK

View Code? Open in Web Editor NEW
1.7K 1.7K 56.0 17.22 MB

Your entire server infrastructure at your fingertips

Home Page: https://xpipe.io

License: Apache License 2.0

Java 95.14% CSS 4.16% Shell 0.35% PowerShell 0.29% Batchfile 0.05%
bash docker filemanager files java javafx k8s kubernetes lxd networking postgres sftp ssh wsl

xpipe's Introduction

XPipe Banner

About

XPipe is a new type of shell connection hub and remote file manager that allows you to access your entire server infrastructure from your local machine. It works on top of your installed command-line programs and does not require any setup on your remote systems. So if you normally use CLI tools like ssh, docker, kubectl, etc. to connect to your servers, you can just use XPipe on top of that.

XPipe fully integrates with your tools such as your favourite text/code editors, terminals, shells, command-line tools and more. The platform is designed to be extensible, allowing anyone to add easily support for more tools or to implement custom functionality through a modular extension system.

It currently supports:

Connection hub

  • Easily connect to and access all kinds of remote connections in one place
  • Organize all your connections in hierarchical categories so you can keep an overview hundreds of connections
  • Create specific login environments on any system to instantly jump into a properly set up environment for every use case
  • Quickly perform various commonly used actions like starting/stopping containers, establishing tunnels, and more
  • Create desktop shortcuts that automatically open remote connections in your terminal without having to open any GUI

connections

Powerful file management

  • Interact with the file system of any remote system using a workflow optimized for professionals
  • Quickly open a terminal session into any directory in your favourite terminal emulator
  • Utilize your entire arsenal of locally installed programs to open and edit remote files
  • Dynamically elevate sessions with sudo when required without having to restart the session
  • Seamlessly transfer files from and to your system desktop environment
  • Work and perform transfers on multiple systems at the same time with the built-in tabbed multitasking

browser

Terminal launcher

  • Boots you into a shell session in your favourite terminal with one click. Automatically fills password prompts and more
  • Comes with support for all commonly used terminal emulators across all operating systems
  • Supports opening custom terminal emulators as well via a custom command-line spec
  • Works with all command shells such as bash, zsh, cmd, PowerShell, and more, locally and remote
  • Connects to a system while the terminal is still starting up, allowing for faster connections than otherwise possible

Terminal launcher


Versatile scripting system

  • Create reusable simple shell scripts, templates, and groups to run on connected remote systems
  • Automatically make your scripts available in the PATH on any remote system without any setup
  • Setup shell init environments for connections to fully customize your work environment for every purpose
  • Open custom shells and custom remote connections by providing your own commands

scripts

Secure vault

  • All data is stored exclusively on your local system in a cryptographically secure vault. You can also choose to increase security by using a custom master passphrase for further encryption
  • XPipe is able to retrieve secrets automatically from your password manager via it's command-line interface.
  • There are no servers involved, all your information stays on your systems. The XPipe application does not send any personal or sensitive information to outside services.
  • Vault changes can be pushed and pulled from your own remote git repository by multiple team members across many systems

Downloads

Note that this is a desktop application that should be run on your local desktop workstation, not on any server or containers. It will be able to connect to your server infrastructure from there.

Windows

Installers are the easiest way to get started and come with an optional automatic update functionality:

You can also install XPipe by pasting the installation command into your terminal. This will perform the setup automatically:

powershell -ExecutionPolicy Bypass -Command iwr "https://github.com/xpipe-io/xpipe/raw/master/get-xpipe.ps1" -OutFile "$env:TEMP\get-xpipe.ps1" ";"  "&" "$env:TEMP\get-xpipe.ps1"

If you don't like installers, you can also use a portable version that is packaged as an archive:

Alternatively, you can also use the following package managers:

  • choco to install it with choco install xpipe.
  • winget to install it with winget install xpipe-io.xpipe --source winget.

Linux

You can install XPipe the fastest by pasting the installation command into your terminal. This will perform the setup automatically. The script supports installation via apt, dnf, yum, zypper, rpm, and pacman on Linux:

bash <(curl -sL https://github.com/xpipe-io/xpipe/raw/master/get-xpipe.sh)

Of course, there are also other installation methods available.

Debian-based distros

The following debian installers are available:

Note that you should use apt to install the package with sudo apt install <file> as other package managers, for example dpkg, are not able to resolve and install any dependency packages.

RHEL-based distros

The following rpm installers are available:

The same applies here, you should use a package manager that supports resolving and installing required dependencies if needed.

Arch

There is an official AUR package available that you can either install manually or via an AUR helper such as with yay -S xpipe.

NixOS

There's an official xpipe nixpkg available that you can install with nix-env -iA nixos.xpipe. This one is however not always up to date.

There is also a custom repository that contains the latest up-to-date releases: https://github.com/xpipe-io/nixpkg. You can install XPipe by following the instructions in the linked repository.

Portable

In case you prefer to use an archive version that you can extract anywhere, you can use these:

Note that this assumes that you have some basic packages for graphical systems already installed as it is not a perfect standalone version. It should however run on most systems.

macOS

Installers are the easiest way to get started and come with an optional automatic update functionality:

You also can install XPipe by pasting the installation command into your terminal. This will perform the .pkg install automatically:

bash <(curl -sL https://github.com/xpipe-io/xpipe/raw/master/get-xpipe.sh)

If you don't like installers, you can also use a portable version that is packaged as an archive:

Alternatively, you can also use Homebrew to install XPipe with brew install --cask xpipe-io/tap/xpipe.

Early access releases

Prior to full releases, there will be several Public Test Build (PTB) releases published at https://github.com/xpipe-io/xpipe-ptb to see whether everything is production ready and contain the latest new features.

In case you're interested in trying out the PTB versions, you can easily do so without any limitations. The regular releases and PTB releases are designed to not interfere with each other and can therefore be installed and used side by side.

Further information

Open source model

XPipe follows an open core model, which essentially means that the main application is open source while certain other components are not. This mainly concerns the features only available in the professional edition and the shell handling library implementation. Furthermore, some CI pipelines and tests that run on private servers are also not included in the open repository.

The distributed XPipe application consists out of two parts:

  • The open-source core that you can find this repository. It is licensed under the Apache License 2.0.
  • The closed-source extensions, mostly for professional edition features, which are not included in this repository

More links

You have more questions? Then check out the FAQ.

For information about the security model of XPipe, see the security page.

For information about the privacy policy of XPipe, see the privacy policy.

In case you're interested in development, check out the contributing page.

Discord

xpipe's People

Contributors

crschnick avatar fadkeabhi avatar muescha avatar tacaly avatar tolgaulas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xpipe's Issues

Symbols semantics

I don't remember where to find a good reference/guideline, but the symbols you're currently using don't match the semantics I'd expect, i.e., I'd expect to get expanding information when clicking on the right-arrow on the left, and be able to re-order items when pressing the bars on the right.

image

If I remember right, the left symbol should be a circle (list item without action), and the right one should be an ellipsis-vertical (additional settings/information).

Add remote host from SSH config

I keep all my SSH machines in my ~/.ssh/config file, would it be possible to have a way to import them into the app?

Host mymachine
	User batman
	IdentityFile ~/.ssh/key3.pem
	HostName 1.2.3.4

Thanks for the great project!

Evaluate MIT vs GPL license

I'm contemplating switching the license to MIT as many people have said they prefer MIT licensed tools in general, especially when it comes to contributing.

So I am open for feedback here.

Move beacon API definitions to protobuf

Right now, the Json API definitions are Jacksonized value classes through Lombok. To easily expand API support to other languages, it would be easier to have these definitions in something like protobuf.

Rework About Screen

It's all a little bit cluttered and the open source notices can be moved to another page/window.

"Unable to determine POSIX shell" when using Fig

MacbookPro M1:

For instance, running

Xpipe daemon mode gui

Error:

A terminal error occurred
Unable to determine POSIX shell: ]697;OSCLock=72b8dbe7-af46-421a-b5b5-c23abb425ede]697;PreExec-NoEnumerate a

Stack trace:

at io.xpipe.ext.procx.util.b.a(SourceFile:217)
at io.xpipe.ext.procx.c.start(SourceFile:226)
at io.xpipe.core.impl.LocalStore.init(LocalStore.java:17)
at io.xpipe.app.core.mode.BaseMode.initialSetup(BaseMode.java:41)
at io.xpipe.app.core.mode.PlatformMode.initialSetup(PlatformMode.java:112)
at io.xpipe.app.core.mode.OperationMode.set(OperationMode.java:239)
at io.xpipe.app.core.mode.OperationMode.switchTo(OperationMode.java:137)
at io.xpipe.app.launcher.LauncherCommand.call(LauncherCommand.java:121)
at io.xpipe.app.launcher.LauncherCommand.call(LauncherCommand.java:23)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at io.xpipe.app.launcher.LauncherCommand.runLauncher(LauncherCommand.java:63)
at io.xpipe.app.core.mode.OperationMode.init(OperationMode.java:106)
at io.xpipe.app.Main.main(Main.java:15)

Temporary directory permission issues

When trying to connect to root ssh connection I get the below error.

io.xpipe.core.process.ProcessOutputException: Process returned exit code 1:
-bash: line 13: /tmp/xpipe/exec/askpass-1169274321.sh.1.txt: Permission denied
at io.xpipe.core.process.ProcessOutputException.of(ProcessOutputException.java:34)
at io.xpipe.ext.proc.a.a(SourceFile:280)
at io.xpipe.ext.proc.a.discardOrThrow(SourceFile:346)
at io.xpipe.core.process.CommandControl.execute(CommandControl.java:41)
at io.xpipe.ext.procx.dialect.c.prepareAskpassContent(SourceFile:690)
at io.xpipe.app.util.ScriptHelper.createAskPassScript(ScriptHelper.java:161)
at io.xpipe.app.util.ScriptHelper.createAskPassScript(ScriptHelper.java:139)
at io.xpipe.app.util.ScriptHelper.createAskPassScript(ScriptHelper.java:127)
at io.xpipe.ext.procx.util.a.a(SourceFile:45)
at io.xpipe.ext.procx.util.a.a(SourceFile:118)
at io.xpipe.ext.procx.g.start(SourceFile:1205)
at io.xpipe.ext.procx.g.prepareIntermediateTerminalOpen(SourceFile:94)
at io.xpipe.ext.procx.g.prepareTerminalOpen(SourceFile:89)
at io.xpipe.core.store.ShellStore.prepareLaunchCommand(ShellStore.java:27)
at io.xpipe.ext.base.action.LaunchAction$Action.execute(LaunchAction.java:29)
at io.xpipe.app.comp.storage.store.StoreEntryWrapper.executeDefaultAction(StoreEntryWrapper.java:197)
at io.xpipe.app.comp.storage.store.StoreEntryComp.lambda$createSimple$1(StoreEntryComp.java:77)
at io.xpipe.app.util.ThreadHelper.lambda$runFailableAsync$0(ThreadHelper.java:18)
at java.lang.Thread.run(Thread.java:1589)

The user account does not have access to /tmp without sudo rights. Could that be the possible cause for this?

Test this on Windows 7 / Windows Server 2008 R2

I would like to set to minimum supported windows version to Windows 7, however I'm unable to test this as that version is no longer available. The main reason for Windows 7 support is that it is still seeing some use and I don't see a technical reason why X-Pipe shouldn't work on there.

BitDefender marks Xpipe as a virus when attempting to launch a WSL shell

BitDefender intercepted my attempt to launch a shell through Xpipe and marked the attempt as an infestation.

image

I know that Windows SmartScreen marks the installation as dangerous because of the lack of an EV certificate, but the BitDefender detection is worrying. Is this a known issue? What is the reason for the detection?

Set up translation service

To easily translate the interface, it would be useful to have an integration with translation crowdsourcing tools.

user does not elevate when required by Docker

My remote machine (Docker, on Ubuntu Server) has disabled root login, key auth required, but once logged in my user can elevate via su. I included my user password in the connection config even though it's not needed for the ssh session itself, so that it can elevate permissions when needed. Docker commands require root privileges on my machine, as it was installed via the system's package manager apt. The SSH session that XPipe started elevated correctly when my containers were first populated in the XPipe window. See attached screenshot that shows the list was populated correctly:
Screenshot_20230708_091816
but when I try to inspect/stop/start a container in XPipe, I get this error (in this case my HomeAssistant container):

Process returned exit code 1:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/HomeAssistant/json": dial unix /var/run/docker.sock: connect: permission denied

Stack trace:

io.xpipe.core.process.ProcessOutputException: Process returned exit code 1:
Got permission denied while trying to connect to the Docker daemon socket at docker.sock: connect: permission denied
at io.xpipe.core.process.ProcessOutputException.of(ProcessOutputException.java:33)
at io.xpipe.ext.proc.a.a(SourceFile:280)
at io.xpipe.ext.proc.a.readStdoutOrThrow(SourceFile:325)
at io.xpipe.ext.proc.store.g$a.execute(SourceFile:35)
at io.xpipe.app.comp.storage.store.StoreEntryComp.lambda$createContextMenu$17(StoreEntryComp.java:252)
at io.xpipe.app.util.ThreadHelper.lambda$runFailableAsync$0(ThreadHelper.java:18)
at java.lang.Thread.run(Thread.java:1589)

This means I can effectively see my docker containers, but cannot interact with anything.

The correct behavior should be to catch the permission denied error and attempt to elevate, just like it did when it first populated the XPipe container list. Barring that, you could instead add a checkbox to the docker settings pop-up that toggles using su for shell commands.

Decide on how to handle large directories

Right now, the loading cuts of after 5000 directory entries primarily to limit the loading time. I could raise that limit, however I don't see how to handle very large directories the best way as using the normal file manager interface kinda becomes useless for so many entries.

Bug: Xpipe shows only white screen

Hi,

I'm very interested in XPipe to run it on my system, but when booting I only see a white screen and nothing else. This occurs when I run it from the CLI /opt/xpipe/app/bin/xpiped and when using the Dekstop icon.

I'm running:

  • Pop!_OS 22.04 LTS
  • 64 bits Intel
  • Installed via *deb package
  • Version: 1.3.2

When run from the CLI the only output is:

[mode] Initial setup

If you need any further information, please let me known.

image

Support clusters such as Kubernetes

Right now, you can connect to individual containers. But it would be very nice to also be able to add whole clusters as well. I'm out of my element here so I'm very much open to ideas on how to implement that.

Investigate LXD list issues

I got a report that the LXD feature fails and complains about the compact switch in this command: lxc list -f compact -c ns . Maybe these are some version differences as that works fine on my machine

powershell remote (PSRemoting)

Is it possible to add powershell remote (WS-Management Remoting) for remote host and remote shell, PowerShell 7+ is also available under linux and macOS;
PSRemoting also has the ability to send/fecth files from the remote host.

Improve startup performance

The startup time should be able to be shortened considerably by parallelizing all the application initialization where possible

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.